赞
踩
在MyBatis中配置分页插件可以方便地实现分页查询功能。常用的分页插件是MyBatis的PageHelper插件。以下是配置MyBatis分页插件的步骤:
引入PageHelper依赖: 在项目的pom.xml
(Maven项目)或build.gradle
(Gradle项目)文件中,添加PageHelper的依赖。
xmlCopy code
<!-- Maven 项目 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.3.0</version> <!-- 查看最新版本 --> </dependency>
groovyCopy code
// Gradle 项目 implementation 'com.github.pagehelper:pagehelper-spring-boot-starter:1.3.0' // 查看最新版本
配置PageHelper属性: 在application.properties
或application.yml
文件中配置PageHelper的属性。
yamlCopy code
pagehelper: helper-dialect: mysql reasonable: true support-methods-arguments: true params: count=countSql
helper-dialect
:数据库方言,例如mysql
、oracle
等。reasonable
:分页合理化参数,默认为false
。如果为true
,pageNum<=0时会查询第一页,pageNum>pages(超过总页数)时会查询最后一页。support-methods-arguments
:支持通过Mapper接口方法参数来传递分页参数,默认为false
。params
:使用简单的行数方式,count=countSql
表示将会把countSql
替换成真正的查询总数的sql。使用PageHelper进行分页查询: 在Mapper接口的方法中使用PageHelper进行分页。
javaCopy code
// 在 Mapper 接口中的查询方法中使用 PageHelper List<MyEntity> selectByExample(@Param("example") MyEntityExample example, Pageable pageable);
Pageable
是Spring Data的分页参数,用于传递分页信息。如果不使用Spring Data,也可以使用PageHelper的Page
类。Controller层处理分页参数: 在Controller层接收分页参数。
javaCopy code
@GetMapping("/my-entities") public ResponseEntity<List<MyEntity>> getMyEntities( @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) { // 调用Service层方法,传递分页参数 PageHelper.startPage(pageNum, pageSize); List<MyEntity> myEntities = myEntityService.getMyEntities(); return ResponseEntity.ok(myEntities); }
pageNum
:当前页码,默认为1。pageSize
:每页显示数量,默认为10。MyBatis配置文件中添加分页插件: 在mybatis-config.xml
文件中配置PageHelper插件,如果使用的是MyBatis的注解方式,可以在Java配置类中进行配置。
xmlCopy code
<!-- mybatis-config.xml --> <configuration> <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <property name="helperDialect" value="mysql"/> <property name="reasonable" value="true"/> <property name="supportMethodsArguments" value="true"/> <property name="params" value="count=countSql"/> </plugin> </plugins> </configuration>
或者在Java配置类中:
javaCopy code
@Configuration public class MyBatisConfig { @Bean public ConfigurationCustomizer configurationCustomizer() { return configuration -> { PageInterceptor pageInterceptor = new PageInterceptor(); Properties properties = new Properties(); properties.setProperty("helperDialect", "mysql"); properties.setProperty("reasonable", "true"); properties.setProperty("supportMethodsArguments", "true"); properties.setProperty("params", "count=countSql"); pageInterceptor.setProperties(properties); configuration.addInterceptor(pageInterceptor); }; } }
注意事项 - 避免Count查询误用: 在配置分页插件时,要注意避免误用count=countSql
属性。这个属性表示PageHelper会将原始的查询语句中的countSql
替换为实际的查询总数的SQL。如果你的Mapper接口中的查询方法是以count
结尾的,那么PageHelper会自动使用这个方法进行总数查询,而不会替换countSql
。
javaCopy code
// 不要使用这种方式命名查询方法 int selectEntityCount(); // 推荐使用这种方式命名查询方法 int countEntities();
更多高级配置: PageHelper还提供了一系列高级配置,例如offsetAsPageNum
、rowBoundsWithCount
、pageSizeZero
等。具体配置可以根据实际需求进行调整,查看官方文档以获取更多详细信息。
yamlCopy code
pagehelper: helper-dialect: mysql reasonable: true support-methods-arguments: true params: count=countSql offset-as-page-num: true row-bounds-with-count: true pageSizeZero: true
集成Spring Boot后的配置: 如果你是使用Spring Boot,PageHelper提供了专门的Spring Boot Starter。在pom.xml
文件中添加以下依赖即可,无需显式配置PageHelper。
xmlCopy code
<!-- Maven 项目 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.3.0</version> <!-- 查看最新版本 --> </dependency>
在Spring Boot应用中,PageHelper会自动根据application.properties
或application.yml
中的配置进行初始化。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。