文章目录

  • RowBounds原理
  • RowBounds使用
    • 1、接口
    • 2、mapper.xml
    • 3、测试
  • RowBounds大坑

RowBounds原理

  • Mybatis可以通过传递RowBounds对象,来进行数据库数据的分页操作,然而遗憾的是,该分页操作是对ResultSet结果集进行分页,也就是人们常说的逻辑分页,而非物理分页(物理分页当然就是我们在sql语句中指定limit和offset值)。
  • 不再使用SQL实现分页

RowBounds使用

1、接口

List<Map> getUserByRowBounds(Map<String,Integer> map);

2、mapper.xml

 <!--分页--><select id="getUserByRowBounds" parameterType="map"  resultType="map" >select *from mybatis01.user ;</select>

3、测试

 @Testpublic void getUserByRowBounds(){SqlSession sqlSession = MybatisUtil.getSqlSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);//RowBounds实现RowBounds rowBounds = new RowBounds(1,2);//通过java代码层面实现分页List<Map> userList = sqlSession.selectList("com.jin.mapper.UserMapper.getUserByRowBounds", null, rowBounds);for (Map map1 : userList) {System.out.println(map1);}sqlSession.close();}

RowBounds大坑

RowBounds是将所有符合条件的数据全都查询到内存中,然后在内存中对数据进行分页
如我们查询user表中id>0的数据,然后分页查询sql如下:

select * from user where id >0 limit 3,10

但使用RowBounds后,会将id>0的所有数据都加载到内存中,然后跳过offset=3条数据,截取10条数据出来,若id>0的数据有100万,则100w数据都会被加载到内存中,从而造成内存OOM

所以当数据量非常大时,一定要慎用RowBounds类。切记!切记

RowBounds实现分页相关推荐

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

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

  2. Mybatis-plus之RowBounds实现分页查询

    物理分页和逻辑分页 物理分页:直接从数据库中拿出我们需要的数据,例如在Mysql中使用limit. 逻辑分页:从数据库中拿出所有符合要求的数据,然后再从这些数据中拿到我们需要的分页数据. 优缺点 物理 ...

  3. MyBatis之RowBounds实现分页查询

    使用RowBounds实现分页查询很简单. MyBatis的分页是基于内存的分页,即查出来所有记录,再按起始位置和页面容量取出结果. Sql映射: <!-- RowBounds实现分页 --&g ...

  4. springboot+mybatis使用RowBounds实现分页

    一.目录结构 其中config中的SwaggerConfig可以帮助测试,有没有均可. 二.pom.xml文件导入相关依赖,userMapping配置与数据库相关代码 pom.xml: <?xm ...

  5. Mybatis的两种分页方式:RowBounds和PageHelper

    原理:拦截器. RowBounds 在mapper.java中的方法中传入RowBounds对象. RowBounds rowBounds = new RowBounds(offset, page.g ...

  6. RowBounds分页原理、RowBounds的坑

    目录 背景说明 一:RowBounds分页原理 二:RowBounds的使用 三:RowBounds的坑 背景说明 项目中经常会使用分页查询,有次使用了RowBounds进行分页,因为很多场景或网上也 ...

  7. Mybatis分页之RowBounds

    Mybatis可以使用RowBounds进行分页 dao层 sql的xml文件,因为是java层面的分页,所以sql不需要分页 单元测试 因为参数是第几个开始,这样很不友好,我们一般情况分页是第几页开 ...

  8. Mybatis RowBounds 分页原理

    在 mybatis 中,使用 RowBounds 进行分页,非常方便,不需要在 sql 语句中写 limit,即可完成分页功能.但是由于它是在 sql 查询出所有结果的基础上截取数据的,所以在数据量大 ...

  9. limit实现分页以及RowBounds分页

    limit分页在这之前学习servlet就实现过 select * from table_name limit startIndex,pagesize 再由简易的算法实现 每次点击下一页来更改page ...

最新文章

  1. C语言常用排序方法大全
  2. 02-vue过滤器和键盘修饰符
  3. VMWare虚拟机转换成KVM
  4. 前端(jQuery UI)(2)-- jQuery UI interactions
  5. leetcode771. 宝石与石头
  6. Socket编程实践(3) 多连接服务器实现与简单P2P聊天程序例程
  7. Echarts数据可视化polar极坐标系,开发全解+完美注释
  8. 再次联手法国力克,雅戈尔打造中国服装“智造”典范
  9. 【openv450-samples】像素点聚类EM 图像聚类目标检测
  10. Less入门以及一些前端面试题
  11. 追寻ARM的起源-Acorn电脑简史及FPGA实现
  12. 腾讯云技术分享:MySQL AHI 实现解析
  13. -1073740791 (0xC0000409)错误,附加内容:qt布局、页面跳转
  14. 2003年新版CCNP考试大纲---CITV5.0(转)
  15. 常用的几个软电话客户端配置
  16. ZZULIOJ: 1187: 棒棒糖(结构体专题)
  17. border之border-style用法
  18. 蓝色经典钢琴-Cinesamples Piano In Blue v2.3b Kontakt
  19. Java中七大垃圾回收器
  20. 晶体管单管放大电路的三种基本接法详解

热门文章

  1. 关于如何保证SSH不断开或任务续连
  2. EOS原力孤矢:站在EOS肩膀上,看齐BTC
  3. 国税局计算机专业知识考哪些,国税系统计算机专业的考试大纲?????~~~~~...
  4. FX5U FX5-40SSC-G简单运动控制模块设置
  5. springboot使用swagger2时,访问http://localhost:8080/swagger-ui.html页面404,无法访问
  6. Python鸭子类型和多态
  7. 深度学习梯度下降优化算法(AdaGrad、RMSProp、AdaDelta、Adam)(MXNet)
  8. CSS 强制不换行,溢出隐藏显示省略号
  9. 使用后台程序的第一个程序hello word
  10. 使用JWT结构化令牌