物理分页和逻辑分页

物理分页:直接从数据库中拿出我们需要的数据,例如在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 分页相关推荐

  1. Mybatis的RowBounds分页

    RowBounds分页 不再使用SQL实现分页 1.接口 List<User> getUserByRowBounds(); 2.mapper.xml <select id=" ...

  2. Mybatis3.3.x技术内幕(十三):Mybatis之RowBounds分页原理

    2019独角兽企业重金招聘Python工程师标准>>> Mybatis可以通过传递RowBounds对象,来进行数据库数据的分页操作,然而遗憾的是,该分页操作是对ResultSet结 ...

  3. mybatis使用RowBounds分页

    其实说白了就是一个用java代替了sql查询的一个方法 在java里面写入方法getUserByRowBounds: List<User> getUserByRowBounds(); 配置 ...

  4. rowbounds分页oracle,Oracle使用MyBatis中RowBounds实现分页查询功能

    Oracle中分页查询因为存在伪列rownum,sql语句写起来较为复杂,现在介绍一种通过使用MyBatis中的RowBounds进行分页查询,非常方便. 使用MyBatis中的RowBounds进行 ...

  5. Mybatis RowBounds分页讲解

    14.RowBounds分页讲解(了解即可) 不在使用SQL实现分页 接口 //分页List<User> getUserRowBounds(); User Mapper.xml <! ...

  6. MyBatis插件使用--分页插件与性能拦截器

    对于PageHelper网上的资料很多,作者的文档写的很全面,我这里只是记录自己的配置和使用的方法 所需jar包:jsqlparser-0.9.5.jar和pagehelper-5.0.0.jar X ...

  7. mybatis pagehelper实现分页

    jar包的版本一定要对应,不然会出现一系列的问题 下载jar包 <properties>           <!-- spring版本号 -->           < ...

  8. MyBatis之PageHelper分页操作

    一.定义 PageHelper用在mybatis插件里面,可以自动的为最近的sql语句进行分页查询,提供分页的页码size和每页数量num,在查询过程中hi自动的拼接limit关键字,不用再改写sql ...

  9. Mybatis四种分页方式

    1.数组分页 查询出全部数据,然后再list中截取需要的部分. mybatis接口 List<Student> queryStudentsByArray(); xml配置文件 <se ...

最新文章

  1. 一文读懂PID控制算法
  2. 企业网络推广下的B站二次上市:致力于造就国内最具活力和创造力的内容社区...
  3. 【错误记录】Flutter 插件不兼容 ( requires Flutter SDK version >=1.22.0 <2.0.0, url_launcher >=5.7.7 <6.0.0- )
  4. Lucene.net常见功能实现知识汇总
  5. 《网站安全攻防秘笈》摘录
  6. OPENCV-5 学习笔记
  7. 拿下京东榜单第五首战告捷,看联想手机如何上演王者归来
  8. MySQL count(1) , count(*), count(列名) 的异同
  9. argument type mismatch怎么解决_iPhone用户超10亿,iphone12隐藏优势终于被发现了_Type...
  10. 地区的省市区联动数据样例
  11. 测试计划和测试方案的区别
  12. deepin20.7安装mysql8.0.30教程
  13. 戴尔笔记本电脑光驱装固态,并设置为系统盘教程
  14. 数字计算机模拟人脑,人造突触问世 计算机模拟人脑不是梦
  15. 高项计算题1-成本管理(挣值分析(EVM分析)、成本预测)
  16. 多线程为什么跑的比单线程还要慢?!
  17. 【软件技术基础】02
  18. 立大志为什么得不了中志? 我们缺少了合理期望
  19. 关于printf与scanf的碎碎念
  20. 如何把PDF文件中的图片保存下来?

热门文章

  1. Quartz所使用的表的说明
  2. 滑动平均模型原理+源码分析
  3. SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
  4. 计算机网络网络性能需求分析报告,主流游戏对处理器性能需求分析总结
  5. 力士乐伺服电机编码器调零_力士乐REXROTH伺服参数设置
  6. 游戏一直服务器维护,游戏服务器显示维护中
  7. python为什么虚部是j不是i_python 拾遗(一)
  8. 哄女朋友的小程序...
  9. camunda 并行及判断结束笔记
  10. 于佳 计算机科学技术学院,于佳-青岛大学生命科学学院