首页 > 其他分享 >Mybatis-plus mybatis流式查询

Mybatis-plus mybatis流式查询

时间:2023-09-26 17:23:07浏览次数:32  
标签:public 数据库 OrderDO 流式 查询 mybatis plus Mybatis order

传统查询是一次性取出所有数据然后处理,对上百万的数据突出两个问题:1. 处理时间长,阻塞数据库IO; 2. 一次性占用内存多,易OOM;
流式查询则使用数据库游标,查一行处理一行,消耗内存较少,不阻塞数据库IO,在大数据处理场景中推荐使用。

/**
 * (Order)表数据库访问层
 *
 * @author liudong
 * @since 2020-09-15 17:07:13
 */
@Mapper
public interface OrderDao extends BaseMapper<OrderDO> {
    /**
     * ResultType对象=ResultHandler需要处理的对象=SQL查询结果
     * 其余参数和正常一样,用@Param标记并传递
     */
    @Select("select * from Order where code=#{obj.code}")
    @Options(resultSetType = ResultSetType.FORWARD_ONLY, fetchSize = Integer.MIN_VALUE)
    @ResultType(OrderDO.class)
    void streamDoHandler(@Param("obj") OrderDO order, ResultHandler<OrderDO> handler);
}
public class OrderService {
    @Resource
    private OrderDao orderDao;
    
    public synchronized void doHandle(Consumer<OrderDO> consumer) {
        OrderDO order = new OrderDO();
        order.setCode("test");
        orderDao.streamDoHandler(order, resultContext -> {
                OrderDO order = resultContext.getResultObject();
                // 处理函数,我此处用lambda从而让可以将处理函数单独拆出来
                consumer.accept(order);
                // 当然,你也可以直接在此处理
                System.out.println(order);
        });
    }
}

参考:https://coldsmog.cn/project-4/doc-177/

        https://www.jb51.net/article/259686.htm

标签:public,数据库,OrderDO,流式,查询,mybatis,plus,Mybatis,order
From: https://www.cnblogs.com/liubaihui/p/17730703.html

相关文章

  • mybatis foreach循环使用的两种传参方式
    方式一:传参ids是用逗号隔开Mapper.java List<>selectByIds(@Param("ids")Stringids);Mapper.xml<selectid="selectByIds"parameterType="String"resultType="String"> select*fromtableawherea.idin......
  • vue3 模糊搜索 不区分大小写 多选框 element plus
    ```javascript<divclass="select-part"ref="selectRef"><divclass="check-type"><inputtype="text"class="check-type-title":placeholder="placeholder"@focus="onFo......
  • Vue3-vite 按需引入Element-plus
    1.下载unplugin-vue-components,unplugin-auto-import包npmi-Dunplugin-vue-componentsunplugin-auto-import2.vite.config.js文件中配置1importAutoImportfrom'unplugin-auto-import/vite'2importComponentsfrom'unplugin-vue-components/vite�......
  • Mybatis-Plus 系列:简介和基本使用
    目录一、简介二、特性三、基本使用1、初始化数据库2、初始化工程3、精简SpringBoot相关日志一、简介官网:https://www.baomidou.comMyBatis-Plus是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,主要作用为简化开发、提高效率。二、特性无侵入:只做增强不做改......
  • 使用Vue3+elementPlus的Tree组件实现一个拖拽文件夹管理
    目录1、前言2、分析3、实现4、踩坑4.1、拖拽辅助线的坑4.2、数据的坑4.3、限制拖拽4.4、样式调整1、前言最近在做一个文件夹管理的功能,要实现一个树状的文件夹面板。里面包含两种元素,文件夹以及文件。交互要求如下:创建、删除,重命名文件夹和文件可以拖拽,拖拽文件到文件夹中,或......
  • mybatis中使用in
     <iftest="areaCode!=nullandareaCode!=''">andAREACODEin(${areaCode})</if> 如果直接传入拼接好的wherein条件,比如('111','222','333'),则需要使用${areaCode}传参,即绝对引用,而不能使用#......
  • java——mybatis随笔
    教程:https://www.cnblogs.com/xiaobaibailongma/p/17019484.html    本地示例:https://www.cnblogs.com/xiaobaibailongma/p/17019676.html      =========================================================================      gitee:示例......
  • Springboot+Mybatis(四)
    单独说一下Mybatis-plus上一篇中介绍了Mybatis的使用方法,对于Mybatisplus,我理解就是把一些方法提前封装好了,不需要自己定义接口类中的内容只需要直接调用即可,把接口类添加继承关系 这里要说的是BaseMapper后面的<User>是要搜索的类的名词,且最好类的名字和表的名字保持一致,......
  • mybatis plus生成的日期时间格式LocalDateTime与String的相互转换
    mybatisplus生成的日期时间格式为LocalDateTime LocalDateTime转为String:将现在的时间转StringStringnowDate=LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-ddHH:mm:ss"))  将指定的String日期转DatetimeLocalDateTimeldatetime=Lo......
  • Springboot+Mybatis(三)
    今天学习了如何使用Mybatis实现增删改查为此做一个梳理发表一篇博客,也是为了总结一下首先,要使用Mybatis需要添加依赖从建立项目的时候选择java8+Springboot2这样的方式,避免高版本存在一些兼容性的问题然后添加Mybatis-plus依赖,老师讲的是添加了plus会自动添加Mybatis的依赖,但......