Java MyBatis-Plus(4)MybatisPlus整合Pagehelper实现分页
序言
PageHelper的使用方法

/** * pageInfo对象中属性含义 * private int pageNum;//当前页码 * private int pageSize;//设置每页多少条数据 * private int size;//当前页有多少条数据 * private int startRow;//当前页码第一条数据的 * private int endRow;//当前页码的开始条 * private int pages;//当前页码结束条 * private int prePage;//上一页(页面链接使用) * private int nextPage;//下一页(页面链接使用) * private boolean isFirstPage;//是否为第一页 * private boolean isLastPage;//是否为最后一页 * private boolean hasPreviousPage;//是否有前一页 * private boolean hasNextPage;//是否有下一页 * private int navigatePages;//导航页码数(就是总共有多少页) * private int[] navigatePageNums;//导航页码数(就是总共有多少页),可以用来遍历 * private int navigateFirstPage;//首页号 * private int navigateLastPage;//尾页号 */ @Test void test() { int pageNum = 1; int pageSize = 3; //1.引入分页插件,pageNum是第几页,pageSize是每页显示多少条,默认查询总数count Page<ApArticle> page = PageHelper.startPage(pageNum, pageSize); //2.紧跟的查询就是一个分页查询-必须紧跟,这样才能保证安全分页, PageHelper 在 finally 代码段中自动清除了 ThreadLocal 存储的对象 List<ApArticle> articleList = apArticleService.list(); //3.使用PageInfo包装查询后的结果,3是连续显示的条数 PageInfo pageInfo = new PageInfo(articleList ,pageSize); System.out.println("总记录数:" + pageInfo.getTotal()); System.out.println("总页数:" + pageInfo.getPages()); System.out.println("一页的大小:" + pageInfo.getSize()); System.out.println("是否有前一页:" + pageInfo.isHasPreviousPage()); }
@Service public class DocServiceImpl implements IDocService { @Autowired private DocMapper docMapper; @Override public PageInfo<Doc> selectDocByPage1(int currentPage, int pageSize) { PageHelper.startPage(currentPage, pageSize); List<Doc> docs = docMapper.selectByPageAndSelections(); PageInfo<Doc> pageInfo = new PageInfo<>(docs); return pageInfo; } }
参考文档说明,我使用了PageHelper.startPage(currentPage, pageSize);
我认为这种方式不入侵mapper代码。
其实一开始看到这段代码时候,我觉得应该是内存分页。其实插件对mybatis执行流程进行了增强,添加了limit以及count查询,属于物理分页
资料
https://github.com/pagehelper/Mybatis-PageHelper
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2020-04-15 DDD(Domain-Driven Design 领域驱动设计)
2018-04-15 Java MyBatis3(3)分页插件PageHelper
2018-04-15 Kubernetes(1)介绍