Mybatis分页插件PageHelper的使用
1 POM文件中引入依赖
<!-- 分页助手 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
2 在配置文件中加入(spring boot项目不需要配置,我这里没有用spring boot的启动类启动)
注意 <plugins> 在mybatis-config.xml文件中的位置,必须要符合 http://mybatis.org/dtd/mybatis-3-config.dtd 中指定的顺序:
<!ELEMENT configuration (properties?, settings?, typeAliases?, typeHandlers?,
objectFactory?, objectWrapperFactory?, plugins?, environments?, databaseIdProvider?, mappers?)>
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL 六种数据库-->
<!--<property name="dialect" value="mysql"/>-->
</plugin>
</plugins>
3如果使用默认的PageInfo
PageHelper.startPage(3, 2); List<CoachClassinfo> list = mapper.selectByCoachid(33); PageInfo<CoachClassinfo> pageInfo = new PageInfo<>(list);
PageInfo是插件作者给我们自己定义自己的PageBean,提供的一个参考例子。
我们可以自定义一个和PageInfo类似的分页结果Bean
import com.github.pagehelper.Page; import lombok.Data; import java.io.Serializable; import java.util.List; /** * @author: chenglongyi **/ @Data public class PageBen<T> implements Serializable { private static final long serialVersionUID = 8656597559014685635L; private long total; //总记录数 private List<T> list; //结果集 private int pageNum; // 第几页 private int pageSize; // 每页记录数 private int pages; // 总页数 private int size; // 当前页的数量 <= pageSize,该属性来自ArrayList的size属性 public PageBen(List<T> list) { if (list instanceof Page) { Page<T> page = (Page)list; this.total = page.getTotal(); this.list = page.getResult(); this.pageNum = page.getPageNum(); this.pageSize = page.getPageSize(); this.pages = page.getPages(); this.size = page.size(); } } }
然后在代码中可以使用:
PageHelper.startPage(3, 2); List<CoachClassinfo> list = mapper.selectByCoachid(33); PageBen<CoachClassinfo> pageInfo = new PageBen<>(list);
使用时可能需要注意的点: PageHelper.startPage(pageNum,pageSize);后面一句必须是基于mapper的查询,否则会不生效。