当前位置:   article > 正文

mybatis 分页插件配置_mybatis配置分页插件

mybatis配置分页插件

在MyBatis中配置分页插件可以方便地实现分页查询功能。常用的分页插件是MyBatis的PageHelper插件。以下是配置MyBatis分页插件的步骤:

  1. 引入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' // 查看最新版本

  2. 配置PageHelper属性:application.propertiesapplication.yml文件中配置PageHelper的属性。

     

    yamlCopy code

    pagehelper: helper-dialect: mysql reasonable: true support-methods-arguments: true params: count=countSql

    • helper-dialect:数据库方言,例如mysqloracle等。
    • reasonable:分页合理化参数,默认为false。如果为true,pageNum<=0时会查询第一页,pageNum>pages(超过总页数)时会查询最后一页。
    • support-methods-arguments:支持通过Mapper接口方法参数来传递分页参数,默认为false
    • params:使用简单的行数方式,count=countSql表示将会把countSql替换成真正的查询总数的sql。
  3. 使用PageHelper进行分页查询: 在Mapper接口的方法中使用PageHelper进行分页。

     

    javaCopy code

    // 在 Mapper 接口中的查询方法中使用 PageHelper List<MyEntity> selectByExample(@Param("example") MyEntityExample example, Pageable pageable);

    • Pageable是Spring Data的分页参数,用于传递分页信息。如果不使用Spring Data,也可以使用PageHelper的Page类。
  4. 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。
  1. 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); }; } }

  2. 注意事项 - 避免Count查询误用: 在配置分页插件时,要注意避免误用count=countSql属性。这个属性表示PageHelper会将原始的查询语句中的countSql替换为实际的查询总数的SQL。如果你的Mapper接口中的查询方法是以count结尾的,那么PageHelper会自动使用这个方法进行总数查询,而不会替换countSql

     

    javaCopy code

    // 不要使用这种方式命名查询方法 int selectEntityCount(); // 推荐使用这种方式命名查询方法 int countEntities();

  3. 更多高级配置: PageHelper还提供了一系列高级配置,例如offsetAsPageNumrowBoundsWithCountpageSizeZero等。具体配置可以根据实际需求进行调整,查看官方文档以获取更多详细信息。

     

    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

  4. 集成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.propertiesapplication.yml中的配置进行初始化。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/88074
推荐阅读
  

闽ICP备14008679号