SpringBoot框架
PageHelper插件
我们在正常的查询业务之中,只需要加上一行代码就可以实现分页的数据的封装处理
实现原理
PageHelper方法使用了静态的ThreadLocal参数,分页参数和线程是绑定的。内部流程是ThreadLocal中设置了分页参数(pageIndex,pageSize),之后在查询执行的时候,获取当线程中的分页参数,执行查询的时候通过拦截器在sql语句中添加分页参数,之后实现分页查询,查询结束后在 finally 语句中清除ThreadLocal中的查询参数
使用方法
1.调用PageHelper方法:PageHelper.startPage(pageNum, pageSize)
2. MyBatis 查询方法
注意:只要你可以保证在PageHelper方法调用后紧跟 MyBatis 查询方法,这就是安全的。因为PageHelper在finally代码段中自动清除了ThreadLocal存储的对象。
MyBatis整合PageHelper插件,自行阅读即可
mybatis中pageHelper的配置使用_灵泽~的博客-CSDN博客
添加PageHelper启动器依赖
1.2. com.github.pagehelper3. pagehelper-spring-boot-starter4. 1.2.125.EmpController
1.package com.msb.controller;2.3.import com.msb.pojo.Emp;4.import com.msb.service.EmpService;5.import org.springframework.beans.factory.annotation.Autowired;6.import org.springframework.stereotype.Controller;7.import org.springframework.web.bind.annotation.PathVariable;8.import org.springframework.web.bind.annotation.RequestMapping;9.import org.springframework.web.bind.annotation.ResponseBody;10.11.import java.util.List;12.13./**14. * @Author: Ma HaiYang15. * @Description: MircoMessage:Mark_700116. */17.@Controller18.@RequestMapping("/emp")19.public class EmpController {20.21. @Autowired22. private EmpService empService;23.24. @RequestMapping("/findByPage/{pageNum}/{pageSize}")25. @ResponseBody26. public List findByPage(@PathVariable("pageNum") Integer pageNum,@PathVariable("pageSize") Integer pageSize){27. return empService.findByPage(pageNum,pageSize);28. }29.}Service层代码编写
1.package com.msb.service.impl;2.3.import com.github.pagehelper.Page;4.import com.github.pagehelper.PageHelper;5.import com.github.pagehelper.PageInfo;6.import com.msb.mapper.EmpMapper;7.import com.msb.pojo.Emp;8.import com.msb.service.EmpService;9.import org.springframework.beans.factory.annotation.Autowired;10.import org.springframework.stereotype.Service;11.12.import java.util.List;13.14./**15. * @Author: Ma HaiYang16. * @Description: MircoMessage:Mark_700117. */18.@Service19.public class EmpServiceImpl implements EmpService {20. @Autowired21. private EmpMapper empMapper;22. @Override23. public List findByPage(Integer pageNum, Integer pageSize) {24. Page page = PageHelper.startPage(pageNum, pageSize);25. List list =empMapper.findAll();26.27. // 方式128. System.out.println("当前页:"+page.getPageNum());29. System.out.println("总页数"+page.getPages());30. System.out.println("页大小:"+page.getPageSize());31. System.out.println("总记录数:"+page.getTotal());32. System.out.println("当前页数据"+page.getResult());33.34. // 方式235. PageInfo pi =new PageInfo(list);36. System.out.println("当前页"+pi.getPageNum());37. System.out.println("总页数"+pi.getPages());38. System.out.println("页大小"+pi.getSize());39. System.out.println("总记录数"+pi.getTotal());40. System.out.println("当前页数据"+pi.getList());41.42. return list;43. }44.}PageInfo对象和Page对象的区别
Page和PageInfo_page转pageinfo_程序员^晓洋的博客-CSDN博客