Springboot中,Mybatis集成PageHelper进行分页

📅 2026/7/17 16:45:22
Springboot中,Mybatis集成PageHelper进行分页
Springboot中Mybatis集成PageHelper进行分页依赖引入在application.properties 配置 pagehelper 的属性使用 pagehelper依赖引入dependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper-spring-boot-starter/artifactIdversion最新版本/version/dependency在application.properties 配置 pagehelper 的属性pagehelper.helperDialectmysql这个参数指定了 PageHelper 使用的数据库方言。不同的数据库有不同的 SQL 语法特别是对于分页查询来说。当设置为 mysql 时PageHelper 会生成适用于 MySQL 数据库的分页 SQL。其他可能的值包括 oracle, mariadb, postgresql, sqlserver 等取决于数据库类型。pagehelper.reasonabletrue启用该选项后当 pageSize0 或者 pageSize 设置得非常大时PageHelper 会尝试进行一个合理的优化。具体表现为如果 pageSize 设为 0 或极大值PageHelper 不会执行分页查询而是直接执行 count 查询并返回所有数据这样可以避免不必要的分页操作提高效率。这个配置项在某些场景下可以有效减少数据库负载。pagehelper.supportMethodsArgumentstrue当此参数设为 true 时PageHelper 会尝试从 Mapper 方法的参数中自动识别分页参数通常是 pageSize 和 pageNum。这意味着在调用 Mapper 方法时可以直接通过方法参数传入分页信息而不需要显式调用 PageHelper.startPage ()。这对于简化代码和提高开发效率非常有用但也需要确保 Mapper 方法签名中参数的顺序和命名能够被 PageHelper 正确解析。pagehelper.paramscountcountSql当 PageHelper 动态生成用于计数的 SQL 时它会将查询中的 SELECT 部分替换为 COUNT (*)并且如果有自定义的统计 SQL比如通过重写 countByExample 等方法那么这个自定义的 SQL 会被用来计算总数。自定义的统计 sql 与查询 sql 按照约定来开发。例如List selectByExample (EntityExample example);那么自定义的统计sql 为:int countByExample (EntityExample example);Entity selectByPrimaryKey (Integer id);那么自定义的统计sql为:int countByPrimaryKey (Integer id);关键点方法名前缀计数方法通常以 count 开头,表明这是一个用于计数的操作。参数列表计数方法的参数列表应该与对应的查询方法完全一致,这样 PageHelper 可以根据相同的参数调用正确的计数方法。使用 pagehelperPage page PageHelper.startPage(pageNum, pageSize);在执行分页查询前需要在 Service 层调用 PageHelper 的 startPage 方法指定当前页码和每页大小。这一步实际上设置了 ThreadLocal 变量保存了分页信息从而实现线程间的隔离。查询List list testItemService.getTestItemList(dto);PageHelper作为MyBatis的一个插件实现了 Interceptor 接口能够在执行 SQL 之前和之后对操作进行拦截从而动态修改 SQL 语句以实现分页功能。构建返回信息可以使用 PageInfo也可自定义类。通过 Page 对象中的信息构建//PageInfo pageInfo new PageInfo(list);rspData.setPageNum(page.getPageNum());rspData.setPageSize(page.getPageSize());rspData.setTotal(page.getTotal());*愿你我都能在各自的领域里不断成长勇敢追求梦想同时也保持对世界的好奇与善意! *