ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

mybatis ResultHandler 对结果集批处理

2026/8/18 18:08:01 拓冰建站 浏览量
mybatis ResultHandler 对结果集批处理

mybatis ResultHandler使用

业务代码

    public void exportUserStudyCardUsageRecords(UserStudyCardUsageRecordParam po, Long startCreateTime, Long closeCreateTime, Consumer<UserStudyCardUsageRecordPo> consumer) {//        ResultHandler<UserStudyCardUsageRecordPo> handler = new ResultHandler<UserStudyCardUsageRecordPo>() {
//            @Override
//            public void handleResult(ResultContext<? extends UserStudyCardUsageRecordPo> resultContext) {
//                consumer.accept(resultContext.getResultObject());
//            }
//        };
        // 上边匿名内部类实现的handler可以 简写为如下的 lamda,而且更推荐lambda写法,性能更高ResultHandler<UserStudyCardUsageRecordPo> resultHandler = (resultContext) -> consumer.accept(resultContext.getResultObject());userStudyCardUsageRecordMapper.selectListByConditionWithResultHandler(po, startCreateTime, closeCreateTime, resultHandler);}

mapper声明

// 注意select查询 返回值是void 不需要返回值,ResultHandler处理结果 
void selectListByConditionWithResultHandler(@Param("param") UserStudyCardUsageRecordParam po, @Param("startTime") Long startCreateTime, @Param("closeTime") Long closeCreateTime, ResultHandler<UserStudyCardUsageRecordPo> resultHandler);

mapper实现

// 注意resultType的类型和ResultHandler的泛型是同一个POJO    
<select id="selectListByConditionWithResultHandler" resultType="com.eduspace.testing.manager.model.entity.UserStudyCardUsageRecordPo">SELECTid,user_id,mobile,description,goods_type,sub_type,source_codeFROMuser_study_card_usage_recordWHERE 1 = 1<if test='param.userId != null '> and user_id = #{param.userId}</if><if test='param.mobile != null '> and mobile = #{param.mobile}</if>order bycreate_time DESC,id DESC</select>

that's all !!