# PageHelper分页依赖的配置与使用 \* ##### 配置:JDK17 + SpringBoot 3.1.5 #### 1.导入依赖 \`\`\`java com.github.pagehelper pagehelper-spring-boot-starter 1.4.6 compile \`\`\` #### 2.拦截器配置 \> 特别注意,新版拦截器是 \`com.github.pagehelper.PageInterceptor\`。 \`com.github.pagehelper.PageHelper\` 现在是一个特殊的 \`dialect\` 实现类,是分页插件的默认实现类,提供了和以前相同的用法。 ##### 2.1 在 MyBatis 配置 xml 中配置拦截器插件 \`\`\`java \`\`\` ##### 2.2 在 Spring 配置文件中配置拦截器插件 \> 使用 spring 的属性配置方式,可以使用 \`plugins\` 属性像下面这样配置 \`\`\`java params=value1 \`\`\` #### 3.使用案例 \`\`\`java //第一种,RowBounds方式的调用 List list = sqlSession.selectList("x.y.selectIf", null, new RowBounds(0, 10)); //第二种,Mapper接口方式的调用,推荐这种使用方式。 PageHelper.startPage(1, 10); List list = countryMapper.selectIf(1); //第三种,Mapper接口方式的调用,推荐这种使用方式。 PageHelper.offsetPage(1, 10); List list = countryMapper.selectIf(1); //第四种,参数方法调用 //存在以下 Mapper 接口方法,你不需要在 xml 处理后两个参数 public interface CountryMapper { List selectByPageNumSize( @Param("user") User user, @Param("pageNum") int pageNum, @Param("pageSize") int pageSize); } //配置supportMethodsArguments=true //在代码中直接调用: List list = countryMapper.selectByPageNumSize(user, 1, 10); //第五种,参数对象 //如果 pageNum 和 pageSize 存在于 User 对象中,只要参数有值,也会被分页 //有如下 User 对象 public class User { //其他fields //下面两个参数名和 params 配置的名字一致 private Integer pageNum; private Integer pageSize; } //存在以下 Mapper 接口方法,你不需要在 xml 处理后两个参数 public interface CountryMapper { List selectByPageNumSize(User user); } //当 user 中的 pageNum!= null \&\& pageSize!= null 时,会自动分页 List list = countryMapper.selectByPageNumSize(user); //第六种,ISelect 接口方式 //jdk6,7用法,创建接口 Page page = PageHelper.startPage(1, 10).doSelectPage(new ISelect() { @Override public void doSelect() { countryMapper.selectGroupBy(); } }); //jdk8 lambda用法 Page page = PageHelper.startPage(1, 10).doSelectPage(()-\> countryMapper.selectGroupBy()); //也可以直接返回PageInfo,注意doSelectPageInfo方法和doSelectPage pageInfo = PageHelper.startPage(1, 10).doSelectPageInfo(new ISelect() { @Override public void doSelect() { countryMapper.selectGroupBy(); } }); //对应的lambda用法 pageInfo = PageHelper.startPage(1, 10).doSelectPageInfo(() -\> countryMapper.selectGroupBy()); //count查询,返回一个查询语句的count数 long total = PageHelper.count(new ISelect() { @Override public void doSelect() { countryMapper.selectLike(country); } }); //lambda total = PageHelper.count(()-\>countryMapper.selectLike(country)); \`\`\` \> 以上参考自官网:https://pagehelper.github.io/docs/howtouse/