Mybatis流式读取数据

应用场景说明

MyBatis JDBC三种读取方式:

1.一次全部(默认):一次获取全部。

2.流式:多次获取,一次一行。

3.游标:多次获取,一次多行。

在开发中我们经常需要会遇到统计数据,如果数据量过大,采用默认的读取方式(一次性获取全

部)会导致内存飙升,甚至是内存溢出。而导出数据又需要查询大量的数据,因此采用流式查询就

比较合适了。

 // 流式查询 一条条查询
            //收集数据用的list
        List<Map<String, Object>> list = new LinkedList<>();
        this.getBaseMapper().selectImpalaBySql(sql, resultContext -> {
            // 取流式查询对象
            Map<String, Object> resultData = resultContext.getResultObject();
            list.add(resultData);
            if (batchSize.compareTo(list.size()) <= 0) {
                //批量处理逻辑
            }
        });
void selectImpalaBySql(@Param("sqlScript") String sqlScript, ResultHandler<Map<String, Object>> handler);
 <select id="selectImpalaBySql" resultSetType="FORWARD_ONLY"  resultType="java.util.Map">
       select <![CDATA[ ${sqlScript} ]]>
 </select>


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值