mybatis 使用RowBounds 分页
物理分页和逻辑分页
物理分页:直接从数据库中拿出我们需要的数据,例如在Mysql中使用limit。
逻辑分页:从数据库中拿出所有符合要求的数据,然后再从这些数据中拿到我们需要的分页数据。
优缺点
物理分页每次都要访问数据库,逻辑分页只访问一次。
物理分页占用内存少,逻辑分页相对较多。
物理分页数据每次都是最新的,逻辑分页有可能滞后。
在 mybatis 中,使用 RowBounds 进行分页,非常方便,不需要在 sql 语句中写 limit,即可完成分页功能。但是由于它是在 sql 查询出所有结果的基础上截取数据的,所以在数据量大的sql中并不适用,它更适合在返回数据结果较少的查询中使用
注意:由于 java 允许的最大整数为 2147483647,所以 limit 能使用的最大整数也是 2147483647,一次性取出大量数据可能引起内存溢出,所以在大数据查询场合慎重使用
示例
数据库数据
接口:
//rowBounds分页List<User> pageByRowBounds();
mapper.xml :
<!-- 使用rowBounds分页--><select id="pageByRowBounds" resultType="user">select * from tb_user</select>
测试代码:
//使用RowBounds分页@Testpublic void pageByBounds(){SqlSession sqlSession = sqlSessionFactory.openSession();RowBounds rowBounds = new RowBounds(0, 2);List<User> list = sqlSession.selectList("dao.UserMapper.pageByRowBounds", null, rowBounds);list.stream().forEach(System.out::println);sqlSession.close();}
结果:
RowBounds.class:
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//package org.apache.ibatis.session;public class RowBounds {public static final int NO_ROW_OFFSET = 0;public static final int NO_ROW_LIMIT = 2147483647;public static final RowBounds DEFAULT = new RowBounds();private int offset;private int limit;public RowBounds() {this.offset = 0;this.limit = 2147483647;}public RowBounds(int offset, int limit) {this.offset = offset;this.limit = limit;}public int getOffset() {return this.offset;}public int getLimit() {return this.limit;}
}
mybatis 使用RowBounds 分页相关推荐
- Mybatis的RowBounds分页
RowBounds分页 不再使用SQL实现分页 1.接口 List<User> getUserByRowBounds(); 2.mapper.xml <select id=" ...
- Mybatis3.3.x技术内幕(十三):Mybatis之RowBounds分页原理
2019独角兽企业重金招聘Python工程师标准>>> Mybatis可以通过传递RowBounds对象,来进行数据库数据的分页操作,然而遗憾的是,该分页操作是对ResultSet结 ...
- mybatis使用RowBounds分页
其实说白了就是一个用java代替了sql查询的一个方法 在java里面写入方法getUserByRowBounds: List<User> getUserByRowBounds(); 配置 ...
- rowbounds分页oracle,Oracle使用MyBatis中RowBounds实现分页查询功能
Oracle中分页查询因为存在伪列rownum,sql语句写起来较为复杂,现在介绍一种通过使用MyBatis中的RowBounds进行分页查询,非常方便. 使用MyBatis中的RowBounds进行 ...
- Mybatis RowBounds分页讲解
14.RowBounds分页讲解(了解即可) 不在使用SQL实现分页 接口 //分页List<User> getUserRowBounds(); User Mapper.xml <! ...
- MyBatis插件使用--分页插件与性能拦截器
对于PageHelper网上的资料很多,作者的文档写的很全面,我这里只是记录自己的配置和使用的方法 所需jar包:jsqlparser-0.9.5.jar和pagehelper-5.0.0.jar X ...
- mybatis pagehelper实现分页
jar包的版本一定要对应,不然会出现一系列的问题 下载jar包 <properties> <!-- spring版本号 --> < ...
- MyBatis之PageHelper分页操作
一.定义 PageHelper用在mybatis插件里面,可以自动的为最近的sql语句进行分页查询,提供分页的页码size和每页数量num,在查询过程中hi自动的拼接limit关键字,不用再改写sql ...
- Mybatis四种分页方式
1.数组分页 查询出全部数据,然后再list中截取需要的部分. mybatis接口 List<Student> queryStudentsByArray(); xml配置文件 <se ...
最新文章
- 一文读懂PID控制算法
- 企业网络推广下的B站二次上市:致力于造就国内最具活力和创造力的内容社区...
- 【错误记录】Flutter 插件不兼容 ( requires Flutter SDK version >=1.22.0 <2.0.0, url_launcher >=5.7.7 <6.0.0- )
- Lucene.net常见功能实现知识汇总
- 《网站安全攻防秘笈》摘录
- OPENCV-5 学习笔记
- 拿下京东榜单第五首战告捷,看联想手机如何上演王者归来
- MySQL count(1) , count(*), count(列名) 的异同
- argument type mismatch怎么解决_iPhone用户超10亿,iphone12隐藏优势终于被发现了_Type...
- 地区的省市区联动数据样例
- 测试计划和测试方案的区别
- deepin20.7安装mysql8.0.30教程
- 戴尔笔记本电脑光驱装固态,并设置为系统盘教程
- 数字计算机模拟人脑,人造突触问世 计算机模拟人脑不是梦
- 高项计算题1-成本管理(挣值分析(EVM分析)、成本预测)
- 多线程为什么跑的比单线程还要慢?!
- 【软件技术基础】02
- 立大志为什么得不了中志? 我们缺少了合理期望
- 关于printf与scanf的碎碎念
- 如何把PDF文件中的图片保存下来?
热门文章
- Quartz所使用的表的说明
- 滑动平均模型原理+源码分析
- SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
- 计算机网络网络性能需求分析报告,主流游戏对处理器性能需求分析总结
- 力士乐伺服电机编码器调零_力士乐REXROTH伺服参数设置
- 游戏一直服务器维护,游戏服务器显示维护中
- python为什么虚部是j不是i_python 拾遗(一)
- 哄女朋友的小程序...
- camunda 并行及判断结束笔记
- 于佳 计算机科学技术学院,于佳-青岛大学生命科学学院