zoukankan      html  css  js  c++  java
  • MyBatis读取大量数据(流式读取)

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

    ## 二、JDBC三种读取方式:
    1. 一次全部(默认):一次获取全部。
    2. 流式:多次获取,一次一行。
    3. 游标:多次获取,一次多行。

    mybatis默认采取第一种。

    ## 三、实现
    ### 1. Business层
    ```java
    //最终查询的List结果
    List<FinancePackageFutureResponseVO> financePackageFutureList = new ArrayList<>();
    financeOrderDao.seachDataList(financeOrderPackageRequestVO, new ResultHandler<FinancePackageFutureResponseVO>() {
        @Override
        public void handleResult(ResultContext<? extends FinancePackageFutureResponseVO> resultContext) {
            /**回调处理逻辑 */
            financePackageFutureList.add(resultContext.getResultObject());
        }
    });
    ```

    ### 2. Dao层
    ```java
    /**
     * 流式读取数据
     * @param financeOrderPackageRequestVO 查询对象
     * @param handler                      回调处理
     */
    void seachDataList(FinanceOrderPackageRequestVO financeOrderPackageRequestVO, ResultHandler<FinancePackageFutureResponseVO> handler);
    ```

    ### 3. Mapper层
    ```java
    <!--
    resultSetType:结果集的游标只能向下滚动
    fetchSize:窗口值
    -->
    <select id="seachDataList" resultMap="SeachDataResultMap" resultSetType="FORWARD_ONLY" fetchSize="1000">
        select i.created_date as createdDate, i.orde_order_inside_no as ordeOrderInsideNo from fina_finance_order_item_expense e
    </select>
    ```

  • 相关阅读:
    c++笔记
    python笔记
    《c++不在难学--随老鸟快速通关》
    hexo
    hexo搭建
    《趣学算法》,陈小玉
    从机器学习谈起
    成不了AI高手?因为你根本不懂数据!听听这位老教授多年心血练就的最实用统计学
    PyTorch还是TensorFlow?这有一份新手指南
    win10下机器学习TensorFlow搭建
  • 原文地址:https://www.cnblogs.com/yifanSJ/p/12658536.html
Copyright © 2011-2022 走看看