MyBatis-plus 分页功能实现
一 、环境背景
Springboot下实现博客的文章列表分页
二 、配置MyBatis-plus的内置分页类
为了让springboot得知我们配置了分页功能,需要创建配置类,进行以下配置
-
增加注解
@configuration 标注为配置注解
@MapperScan mybatis扫包,标注配置的应用包位置
@Configuration
//mybatis扫包
@MapperScan("com.bhy.blog.dao.mapper")
public class MybatisPlusConfig {
//分页插件
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
}
三、场景应用——文章列表分页
3.1 核心函数
<E extends IPage<T>> E selectPage(E page, @Param("ew") Wrapper<T> queryWrapper);
3.2 过程分析
-
传入页码信息 (第几页,一页多少条)
Page<Article> page= new Page<>(pageParams.getPage(),pageParams.getPageSize());
-
设置查询条件
LambdaQueryWrapper<Article> queryWrapper = new LambdaQueryWrapper<>(); ....
-
使用
selectpage()
函数,返回Page对象Page<Article> articlePage = articleMapper.selectPage(page, queryWrapper);
-
通过
getRecords()
函数从Page对象中获取article数组List<Article> records = articlePage.getRecords();
-
将article数组传回前端
return records
3.3 实例代码
该代码实现了 文章列表的分页查询,并遵循置顶优先,创建日期次优先的规则排序
@Override
public Result listArticle(PageParams pageParams) {
Page<Article> page= new Page<>(pageParams.getPage(),pageParams.getPageSize());
LambdaQueryWrapper<Article> queryWrapper = new LambdaQueryWrapper<>();
//是否置顶进行排序 创建日期排序
queryWrapper.orderByDesc(Article::getWeight,Article::getCreateDate);
Page<Article> articlePage = articleMapper.selectPage(page, queryWrapper);
List<Article> records = articlePage.getRecords();
return records;
}