下面我会详细讲解Spring Boot集成PageHelper的两种方式及相应的示例。
方式一:使用PageHelper Starter
- 第一步:在
pom.xml
文件中添加以下依赖:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
- 在Spring Boot的主配置文件中添加以下配置:
mybatis:
# 开启驼峰命名
configuration:
map-underscore-to-camel-case: true
# 使用PageHelper插件
mapper:
mappers:
- com.github.abel533.mapper.Mapper
# 配置 PageHelper 插件
helper-dialect: mysql
reasonable: true
support-methods-arguments: true
params: count=countSql
auto-runtime-dialect: true
close-abandoned: true
max-active: 20
max-wait: 60000
说明:
* helper-dialect: 指定PageHelper使用的数据库方言,这里是mysql。
* reasonable: 分页参数合理化,默认值为 false。当该参数设置为 true 时,pageNum<=0 时会查询第一页,pageNum>pages(超过总数时),会查询最后一页。设置为true时,也会将pagesize>total的设为等于total。(默认值为false)。
* support-methods-arguments: 支持通过 Mapper 接口参数来传递分页参数,默认值false,分页插件会从查询方法的参数值中,自动根据上面配置的参数属性名提取pageNum和pageSize作为分页参数。
* params: PageHelper提供了一个默认实现类,也可以自己扩展,自定义的需要重写PageInterceptor
类,并将自定义的PageInterceptor
的名称配置到params节点,这里我们使用PageHelper默认的实现类。
* auto-runtime-dialect: 自动获取运行时的数据源,此时必须配置该属性为true。
* close-abandoned: 是否关闭长时间不使用采用未关闭的数据连接。默认false打开。
* max-active: 最大连接数。
* max-wait: 获取连接最大等待时间。
- 在Mapper接口的方法上添加
@Select
注解,如下所示:
@Select("SELECT * FROM user")
List<User> getAllUser();
- 在需要分页的Mapper接口方法上添加
@Select
注解并传入分页参数,如下所示:
@Select("SELECT * FROM user")
List<User> getAllUser(Page<User> page);
至此,我们已经完成了使用PageHelper Starter集成Spring Boot的示例。
方式二:手动集成PageHelper
- 第一步:在
pom.xml
文件中添加以下依赖:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.1</version>
</dependency>
- 在Spring Boot的主配置文件中添加以下配置:
mybatis:
# 开启驼峰命名
configuration:
map-underscore-to-camel-case: true
# 开启日志
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#自定义PageHelper插件,参数参考PageHelper官方文档
#这里配置mysql,根据需要调整
plugin:
limit:
# mapper接口方法名以ByPage结尾的进行分页
mapperMethod: .*ByPage$
dialect: mysql
helperDialect: mysql
offsetAsPageNum: true
rowBoundsWithCount: true
pageSizeZero: true
reasonable: true
params: count=countSql
autoRuntimeDialect: true
说明:
* mapperMethod: 指定 PageHelper 对哪些 Mapper 接口方法进行拦截,默认情况下,所有继承自 Mybatis 的抽象方法(Abstract Method)都会被拦截(这里设置以ByPage结尾的方法才被拦截)。
* dialect:指定数据库方言,这里是mysql。
* helperDialect:分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。
* offsetAsPageNum:页码数偏移量,适用于从第1页开始显示数据的场景。
* rowBoundsWithCount:是否进行 count 查询。
* pageSizeZero:分页合理化参数,即当页面大小为 0 或者查询的结果集为空时是否返回数据。
* reasonable:分页合理化参数,即是否合理化分页信息。默认值为 false。
* params: PageHelper提供了一个默认实现类,也可以自己扩展,自定义的需要重写PageInterceptor
类,并将自定义的PageInterceptor
的名称配置到params节点,这里我们使用PageHelper默认的实现类。
* autoRuntimeDialect: 自动获取运行时的数据源,此时必须配置该属性为true。
- 自定义PageHelper拦截器,如下所示:
@Configuration
public class PageHelperConfig {
@Bean
public PageInterceptor pageInterceptor() {
PageInterceptor pageInterceptor = new PageInterceptor();
Properties props = new Properties();
//拦截参数以ByPage结尾的方法
props.setProperty("helperDialect", "mysql");
props.setProperty("reasonable", "true");
props.setProperty("supportMethodsArguments", "true");
props.setProperty("params", "count=countSql");
pageInterceptor.setProperties(props);
return pageInterceptor;
}
@Bean
public ConfigurationCustomizer configurationCustomizer() {
return new ConfigurationCustomizer() {
@Override
public void customize(Configuration configuration) {
configuration.addInterceptor(pageInterceptor());
}
};
}
}
- 在Mapper接口的方法上添加
@Select
注解,如下所示:
@Select("SELECT * FROM user")
List<User> getAllUser();
- 在需要分页的Mapper接口方法上添加
@Select
注解并传入分页参数,如下所示:
@Select("SELECT * FROM user")
List<User> getAllUser(Page<User> page);
至此,我们已经完成了手动集成PageHelper的示例。
以上就是Spring Boot集成PageHelper的两种方式的完整攻略了。希望能为你提供帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:spring boot集成pagehelper(两种方式) - Python技术站