目录
逻辑分页
使用MyBatis自带的RowBounds进行分页,一次性查询很多数据,然后在结果中检索分页的数据。这样弊端是需要消耗大量的内存、有内存溢出的风险、对数据库压力较大。 RowBounds不是一次性查询全部结果,因为MyBatis是对jdbc的封装,在jdbc驱动中有一个Fetch Size的配置,它规定了每次最多从数据库查询多少条数据,假如你要查询更多数据,它会在你执行next()的时候,去查询更多的数据。
物理分页
自己手写SQL分页或使用分页插件PageHelper,从数据库查询指定条数的数据。
原理
分页插件的基本原理是使用MyBatis提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的SQL,然后重写SQL,根据dialect方言,添加对应的物理分页语句和物理分页参数。
分页插件(PageHelper)
//maven依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
本文介绍了MyBatis的分页方式,包括逻辑分页使用RowBounds带来的内存消耗问题,以及物理分页的实现,如自定义SQL或使用PageHelper分页插件的工作原理。PageHelper插件通过拦截SQL并添加物理分页语句来实现高效分页查询。
订阅专栏 解锁全文
1542

被折叠的 条评论
为什么被折叠?



