学习目标:
【掌握】条件分页查询
参考:
十次方项目开发系列【1】:项目介绍和工程搭建
项目结构如下
一 配置分页查询插件
- 使用 Mybatis Plus 提供的Page对象
- 向Mybatis Plus中注入PaginationInterceptor插件
- 新建config包,创建MybatisPlusConfig对象,添加下面的代码
新建MyBatisPlusConfig.java
在java.com.Tony.article.config中新建MyBatisPlusConfig.java并加入方法
package com.Tony.article.config;
/../
/**
* @author AntonTony
* @version 1.0
* @GitHub https://github.com/AntonTony
*/
@Configuration
public class MyBatisPlusConfig {
//配置分页查询插件
@Bean
public PaginationInterceptor createPaginationInterceptor(){
return new PaginationInterceptor();
}
}
二 编写条件分页查询功能模块
2.1 在ArticleController中添加方法
- 原前接收文章数据,使用pojo,但是现在根据条件查询
- 而所有条件都需要进行判断,遍历pojo的所有属性需要使用反射的方式,成本较高,效能较低
- 直接使用集合的方式遍历,这里接受数据改为Map集合
// POST /article/search/{page}/{size} 文章分页方法
@RequestMapping(value = "/search",method = RequestMethod.POST)
public Result findByPage(@PathVariable Integer page,
@PathVariable Integer size,
@RequestBody Map<String,Object> map){ //使用集合的方式遍历
//根据条件分页查询
Page<Article> pageData = articleService.findByPage(map,page,size);
//封装分页返回对象
PageResult<Article> pageResult = new PageResult<>(
pageData.getTotal(),pageData.getRecords() //总记录数和当前页的数据结果集
);
return new Result(true,StatusCode.OK,"分页查询成功",pageResult);
}
2.2 在ArticleService中添加方法
//根据条件分页查询
public Page<Article> findByPage(Map<String, Object> map, Integer page, Integer size) {
//设置条件查询
EntityWrapper<Article> wrapper =new EntityWrapper<>();
//遍历map拿到key
Set<String> keySet= map.keySet();
for (String key: keySet){
//此if与下方语句效果相同
if(map.get(key)!= null){
wrapper.eq(key,map.get(key));
}
//第一个参数是Boolean型,判断是否把后面的条件加入到查询条件中,实现动态SQL
wrapper.eq(null != map.get(key),key,map.get(key));
}
//设置分页参数,使用 Mybatis Plus 提供的Page对象
Page<Article> pageData = new Page<>(page,size);
//执行查询,第一个是分页参数,第二个是查询条件:得到结果集
List<Article> list = articleDao.selectPage(pageData,wrapper);
//将结果集放入pageData
pageData.setRecords(list);
return pageData;
}
2.3 重启启动类ArticleApplication并打开接口测试工具
查询columnid==11的结果集,显示第一页,每页显示一个结果集
三 相关知识:
3.1 map.keyset()
该方法返回map中所有key值的列表
3.2 map.get(key)
通过key获得value
3.3 Mybatis Plus 提供的Page对象
3.4 分页查询插件PaginationInterceptor
总结
通过本篇文章:
- 掌握了分页查询插件PaginationInterceptor配置
- 完成了条件分页查询功能模块
转载:https://blog.csdn.net/cxy1430826258/article/details/105479641
查看评论