mybatis中mysql流式读取_MyBatis读取大量数据(流式读取)

## 一、背景

导出大量数据时,虚拟机频繁GC,内存耗尽,CPU爆满,可采用Mybatis数据流式读取进行优化。

## 二、JDBC三种读取方式:

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

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

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

mybatis默认采取第一种。

## 三、实现

### 1. Business层

```java

//最终查询的List结果

List financePackageFutureList = new ArrayList<>();

financeOrderDao.seachDataList(financeOrderPackageRequestVO, new ResultHandler() {

@Override

public void handleResult(ResultContext extends FinancePackageFutureResponseVO> resultContext) {

/**回调处理逻辑 */

financePackageFutureList.add(resultContext.getResultObject());

}

});

```

### 2. Dao层

```java

/**

* 流式读取数据

* @param financeOrderPackageRequestVO 查询对象

* @param handler                      回调处理

*/

void

seachDataList(FinanceOrderPackageRequestVO

financeOrderPackageRequestVO,

ResultHandler handler);

```

### 3. Mapper层

```java

select i.created_date as createdDate, i.orde_order_inside_no as ordeOrderInsideNo from fina_finance_order_item_expense e

```

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值