定义业务处理接口

import java.util.List;/*** @author 向振华* @date 2021/12/30 11:30*/
public interface PageService<T> {/*** 业务处理** @param records*/void business(List<T> records);
}

定义工具类,这里提供了两种实现方式

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.util.CollectionUtils;/*** @author 向振华* @date 2021/12/30 1:41*/
public class PageUtils {public static <T> void pageTurner(LambdaQueryChainWrapper<T> lambdaQueryChainWrapper, PageService<T> pageService) {// 当前页long current = 1;// 分页大小,可以修改long size = 200;for (; ; ) {// 分页Page<T> page = new Page<>(current, size);// 执行lambdaQueryChainWrapper.page(page);// 结果为空,直接返回if (CollectionUtils.isEmpty(page.getRecords())) {return;}// 业务处理pageService.business(page.getRecords());// 说明没有下一页,直接返回if (current * size >= page.getTotal()) {return;}// 下一页current++;}}public static <T> void pageTurner(IService<T> iService, Wrapper<T> queryWrapper, PageService<T> pageService) {// 当前页long current = 1;// 分页大小,可以修改long size = 200;for (; ; ) {// 分页Page<T> page = new Page<>(current, size);// 执行iService.page(page, queryWrapper);// 结果为空,直接返回if (CollectionUtils.isEmpty(page.getRecords())) {return;}// 业务处理pageService.business(page.getRecords());// 说明没有下一页,直接返回if (current * size >= page.getTotal()) {return;}// 下一页current++;}}
}

使用方式

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.bzcst.bop.charge.Application;
import com.bzcst.bop.oms.orm.model.po.UserOrder;
import com.bzcst.bop.oms.orm.service.UserOrderService;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;import javax.annotation.Resource;
import java.util.List;/*** @author 向振华* @date 2021/11/11 19:34*/
@Slf4j
@SpringBootTest(classes = Application.class)
@RunWith(SpringRunner.class)
public class OrderTest {@Resourceprivate UserOrderService userOrderService;@Testpublic void name1() {LambdaQueryChainWrapper<UserOrder> lqcw = userOrderService.lambdaQuery().eq(UserOrder::getUserId, 29L);PageUtils.pageTurner(lqcw, new PageService<UserOrder>() {@Overridepublic void business(List<UserOrder> records) {for (UserOrder record : records) {System.out.println(record);}}});}@Testpublic void name2() {LambdaQueryWrapper<UserOrder> lqw = new LambdaQueryWrapper<>();lqw.eq(UserOrder::getUserId, 29L);// 如果不需要查询条件,lqw传nullPageUtils.pageTurner(userOrderService, lqw, new PageService<UserOrder>() {@Overridepublic void business(List<UserOrder> records) {for (UserOrder record : records) {System.out.println(record);}}});}
}

MyBatis-Plus对于大数据量查询,采用分页查询按批次处理结果,通用工具封装相关推荐

  1. 大数据量下 PageHelper 分页查询性能问题的解决办法

    作者:岁月安然 blog.csdn.net/baidu_38083619/article/details/82463058 前因 项目一直使用的是PageHelper实现分页功能,项目前期数据量较少一 ...

  2. MyBatis Plus 解决大数据量查询慢问题

    分享知识 传递快乐 大数据量操作的场景大致如下: 数据迁移 数据导出 批量处理数据 在实际工作中当指定查询数据过大时,我们一般使用分页查询的方式一页一页的将数据放到内存处理.但有些情况不需要分页的方式 ...

  3. 大数据量表的优化查询

    1:索引,我们最先想到的就是创建索引,创建索引可以成倍的提升查询的效率,节省时间.但是如果数据量太过于巨大的时候,这个时候单纯的创建索引是无济于事的,我们知道假如特别是在大数据量中统计查询,就拿100 ...

  4. mysql大数据量使用limit分页,随着页码的增大,查询效率越低下。

    转载地址:http://www.cnblogs.com/lpfuture/p/5772055.html 测试实验 1.   直接用limit start, count分页语句, 也是我程序中用的方法: ...

  5. Mysql优化-大数据量下的分页策略

    一.前言 通常,我们分页时怎么实现呢? 1 SELECT * FROM table ORDER BY id LIMIT 1000, 10; 但是,数据量猛增以后呢? 1 SELECT * FROM t ...

  6. 大数据翻页_大数据量下的分页解决方法

    最好的办法是利用sql语句进行分页,这样每次查询出的结果集中就只包含某页的数据内容.再sql语句无法实现分页的情况下,可以考虑对大的结果集通过游标定位方式来获取某页的数据. sql语句分页,不同的数据 ...

  7. 大数据量分页查询方法(转)

    本文旨在介绍一种对数据库中的大数据量表格进行分页查询的实现方法,该方法对应用服务器.数据库服务器.查询客户端的cpu和内存占用都较低,查询速度较快,是一个较为理想的分页查询实现方案. 1.问题的提出  ...

  8. mysql大数据量分页的一些做法

    随着公司业务的增长,数据库的数据也呈指数级增长,拿订单表为例,之前公司的订单表每天只有几千个,一个月下来不超过十万.而现在每天的订单大概就是2w+,目前订单表的数据已经达到了700w.这带来了各种各样 ...

  9. 大数据量下(批量)提升性能的方法以及常见的性能优化方法

    数据库层面(包含数据库设计和语句):尽量做到节省时间和数据库开销 1.让语句更加合理,符合查询优化的规则.避免全表扫描,建立高效索引,正确利用索引等. 2.避免频繁创建和删除临时表. 3.尽量避免向客 ...

  10. MySQL 和 Oracle 大数据量分页查询方法及其优化

    MySQL大数据量分页查询方法及其优化 ---方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N ---适 ...

最新文章

  1. 灵魂调参师被AutoGluon打爆,李沐:调得一手好参的时代要过去了
  2. 联邦学习最新研究趋势
  3. swift 数组高阶使用(一)
  4. Linux如何打开执行脚本
  5. linux怎么安装32电脑上,linux – 如何在Ubuntu上安装mingw32?
  6. PSPad 免费文本编辑器推荐
  7. 没有信号无服务器,没有信号不用怕“音离”你身边的便携式基站
  8. 8.0强行转换后变成了7_DCDC电源转换器应用FHP8N60型号,可替代FQP8N60参数的国外场效应管!...
  9. python编程入门第一课教案_python编程从入门到实践 第一课:输入输出
  10. 关于QT报C:\Program Files (x86)\sogoupinyin\Components\的错误
  11. [sql面试经验] 经典sql面试题及答案第2期
  12. pip更新不成功/Python虚拟环境下如何更新pip(Pycharm)
  13. 无线通信中多径传播包络服从瑞利衰落衰落MATLAB仿真
  14. Shopee运营中如何规避账号安全风险?站斧超级浏览器防关联运营
  15. 消防报警图形显示装置linux,消防中控-消防控制室图形显示装置状态识别及操作...
  16. Zabbix监控系统系列之九:监控网络设备指定接口流量
  17. java实现微信公众号API服务端调用封装
  18. 各个版本的python在windows上如何安装pywin32
  19. 鼎信通达MTG3000/MTG2000中继网关双重应用组网
  20. 面试官问出这几道算法题,你能扛住么?

热门文章

  1. [Java 基础]-- java提供的访问数据库的接口(jdbc)
  2. 焊接 0.5mm 间距 40pin 软排线底座FPC 的经验小谈
  3. 焊接心得(2016.8.30)
  4. 跨考计算机面试英语自我介绍,2019考研复试面试英语自我介绍范文(1)
  5. ASE:空间分析、空间统计及空间计量经典论文系列推文概述
  6. P4117 [Ynoi2018] 五彩斑斓的世界
  7. 智慧物业综合管理系统(java+vue+Uni-app),源码免费分享
  8. java和大行自行车哪个好_大行自行车P8和D8哪个好?
  9. filemanager-webpack-plugin 打包自动压缩zip
  10. 分享Python简短代码,实现TXT转换MySQL文件。