MyBatis-Plus分页查询以及⾃定义sql分页
⼀、引⾔
分页查询每个⼈程序猿⼏乎都使⽤过,但是有部分同学不懂什么是
物理分页和逻辑分页
。
物理分页:相当于执⾏了limit分页语句,返回部分数据。物理分页只返回部分数据占⽤内存⼩,能够获取数据库最新的状态,实
施性⽐较强,⼀般适⽤于数据量⽐较⼤,数据更新⽐较频繁的场景。
逻辑分页:⼀次性把全部的数据取出来,通过程序进⾏筛选数据。如果数据量⼤的情况下会消耗⼤量的内存,由于逻辑分页只需
要读取数据库⼀次,不能获取数据库最新状态,实施性⽐较差,适⽤于数据量⼩,数据稳定的场合。
那么MP中的物理分页怎么实现呢? 往下看往下看
⼆、配置
创建MybatisPlusConfig配置类,需要配置分页插件,⼩编使⽤的Spring boot配置⽅式。
@Configuration
public class MyBatisPlusConfig {
/**
*
分页插件
* @return
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
三、具体分页实现
MP的
BaseMapper提供了两种分页查询的⽅式
,源码如下:
/**
*
根据
entity
条件,查询全部记录(并翻页)
* @param page
分页查询条件(可以为
RowBounds.DEFAULT
)
* @param queryWrapper
实体对象封装操作类(可以为
null
)
*/
IPage<T> selectPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
/**
*
根据
Wrapper
条件,查询全部记录(并翻页)
*
* @param page
分页查询条件
* @param queryWrapper
实体对象封装操作类
*/
IPage<Map<String, Object>> selectMapsPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
可见两个分页⽅法参数都是⼀致的,只是返回参数略有不同,具体选择根据实际业务为准。