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 !!

浙公网安备 33010602011771号