分页查询和条件分页查询

打印 上一主题 下一主题

主题 949|帖子 949|积分 2847

分页查询

分析:

  • 分析文档要求
  • 查看前端传递给后台的参数
  • 分析参数进行编码
  • 后台返回给前端的数据
思路
浏览器 - > Controller层 - > Service层 - > Mapper层 - > 数据库


设置分页拦截器
  1. @Configuration
  2. public class MybatisPlusConfig {
  3.     @Bean
  4.     public MybatisPlusInterceptor mybatisPlusInterceptor() {
  5.         // 创建MybatisPlusInterceptor拦截器对象
  6.         MybatisPlusInterceptor mpInterceptor = new MybatisPlusInterceptor();
  7.         // 添加分页拦截器
  8.         mpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
  9.         return mpInterceptor;
  10.     }
  11. }
复制代码
IPage分页对象的常用调用方法
​        IPage内部原理是基于拦截去,拦截的是方法以及方法中的参数,会判断是否查询操作。如果是查询操作,才会进入分页的逻辑处理。进入分页的逻辑处理后,拦截器会通过反射获取该方法的参数进行判断是否存在IPage对象的实体类。如果不存在就不进行分页,存在则将该参数赋值给IPage对象。再进行拼接sql处理完成IPage对象。
  1. void selectPage() {
  2.     // 1 为当前页码  2 为每页的记录数
  3.         IPage<User> page=new Page<>(1,3);
  4.         userDao.selectPage(page,null);
  5.         System.out.println("当前页码值:"+page.getCurrent());
  6.         System.out.println("每页显示数:"+page.getSize());
  7.         System.out.println("一共多少页:"+page.getPages());
  8.         System.out.println("一共多少条数据:"+page.getTotal());
  9.         System.out.println("数据:"+page.getRecords());
  10. }
复制代码
流程

Controller层
  1. @RestController
  2. @RequestMapping("/emps")
  3. public class EmpController {
  4.    
  5.     @Autowired
  6.     private EmpService empService;
  7. // @RequestParam使用defaultValue属性设置默认值
  8. // @GetMapping请求映射的地址
  9. @GetMapping
  10.     public Result selectLimit(@RequestParam(defaultValue = "1") Integer page,
  11.                              @RequestParam(defaultValue = "10") Integer pageSize) {
  12.         // 调用业务层进行查询
  13.         PageBean pageBean = empService.selectLimit(page, pageSize);
  14.         // 返回打包封装后的数据
  15.         return Result.success(pageBean);
  16.     }
  17. }
复制代码
Service层

  1. @Service
  2. public class EmpServiceImpl extends ServiceImpl<EmpMapper, Emp> implements EmpService {
  3.     @Autowired
  4.     private EmpMapper empMapper;
  5.     @Override
  6.     public PageBean selectLimit(Integer page, Integer pageSize) {
  7.         // 定义Emp实体对象封装操作类
  8.         QueryWrapper<Emp> queryWrapper = new QueryWrapper<>();
  9.         // 进行分页查询
  10.         IPage<Emp> iPage = new Page<>(page, pageSize);
  11.         iPage = empMapper.selectPage(iPage, queryWrapper);
  12.         //封装返回值 返回
  13.         return new PageBean(iPage.getTotal(), iPage.getRecords());
  14.     }
  15. }
复制代码
Mapper层
  1. @Mapper
  2. public interface EmpMapper extends BaseMapper<Emp> {
  3. }
复制代码
条件分页查询

Controller 层


  • 接受参数(分页参数, 查询条件)
  • 调用service进行条件分页查询, 获取pagebean
  • 响应
Service 层

借阅:MyBatis-Plus分页插件IPage的使用展示------分页查询_mybatisplus ipage_星域_03zhan的博客-CSDN博客

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

自由的羽毛

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表