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">
        SELECT
        id,
        user_id,
        mobile,
        description,
        goods_type,
        sub_type,
        source_code
        FROM
        user_study_card_usage_record
        WHERE 1 = 1
        <if test='param.userId != null '> and user_id = #{param.userId}</if>
        <if test='param.mobile != null '> and mobile = #{param.mobile}</if>
        order by
        create_time DESC,
        id DESC
    </select>

that's all !!

posted @ 2025-11-14 09:25  ジ绯色月下ぎ  阅读(11)  评论(0)    收藏  举报