方式一:使用原生的PageHelper
1.在pom.xml中引入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.3</version>
</dependency>
2.在项目里面添加配置
@Configuration
public class MybatisConfig {
@Bean
public PageHelper pageHelper() {
PageHelper pageHelper = new PageHelper();
Properties p = new Properties();
p.setProperty("dialect", "Mysql");
p.setProperty("offsetAsPageNum", "true");
p.setProperty("rowBoundsWithCount", "true");
pageHelper.setProperties(p);
return pageHelper;
}
}
方式二:springboot中使用PageHelper
1.在pom.xml中引入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.10</version>
</dependency>
2.在application.properties或者application.yml格式配置pagehelper的属性
#pagehelper分页插件配置 pagehelper.helper-dialect=mysql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true
pagehelper.params=count=countSql
推荐使用:
# 分页配置
pagehelper:
helper-dialect: mysql
reasonable: true
support-methods-arguments: true
params: count=countSql
配置解释:
**pagehelper.helperDialect:**分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。 你可以配置helperDialect属性来指定分页插 件使用哪种方言。配置时,可以使用下面的缩写值:
oracle,mysql,mariadb,sqlite,hsqldb,postgresql,db2,sqlserver,informix,h2,sqlserver2012,derby
特别注意:使用 SqlServer2012 数据库时,需要手动指定为 sqlserver2012,否则会使用 SqlServer2005
的方式进行分页。
**pagehelper.reasonable:**分页合理化参数,默认值为false。当该参数设置为 true 时,pageNum<=0 时会查询第一页, pageNum>pages(超过总数时),会查询最后一页。默认false 时,直接根据参数进行查询。
**pagehelper.supportMethodsArguments:**支持通过 Mapper 接口参数来传递分页参数,默认值false,分页插件会从查询方法的参数值中,自动根据上面 params
配置的字段中取值,查找到合适的值时就会自动分页。 使用方法可以参考测试代码中的
com.github.pagehelper.test.basic 包下的 ArgumentsMapTest 和 ArgumentsObjTest。
**pagehelper.params:**为了支持startPage(Object params)方法,增加了该参数来配置参数映射,用于从对象中根据属性名取值, 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值,
默认值为pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero。
PageHelper.startPage(pageNum,pageSize)使用注意
// 注意 : 后边需要紧跟查询条件,也就是查询的数据
// pageNum:当前页数 pageSize:当前页需要显示的数量
PageHelper.startPage(pageNum,pageSize);
业务中使用
例:
/**
* 根据用户的id查询当前用户下的所有上传的文件 pageHelper进行分页
*
* @param userId
*/
@Override
public List<File> findFiles(Integer userId) {
//分页只需要在查询的数据前设置当前页和每页大小即可,也有默认值
PageHelper.startPage(1, 5);
List<File> files = fileMapper.findFiles(userId);
return files;
}