spring boot集成pagehelper(两种方式)

下面我会详细讲解Spring Boot集成PageHelper的两种方式及相应的示例。

方式一:使用PageHelper Starter

  1. 第一步:在pom.xml文件中添加以下依赖:
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.3.0</version>
</dependency>
  1. 在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: 获取连接最大等待时间。

  1. 在Mapper接口的方法上添加@Select注解,如下所示:
@Select("SELECT * FROM user")
List<User> getAllUser();
  1. 在需要分页的Mapper接口方法上添加@Select注解并传入分页参数,如下所示:
@Select("SELECT * FROM user")
List<User> getAllUser(Page<User> page);

至此,我们已经完成了使用PageHelper Starter集成Spring Boot的示例。

方式二:手动集成PageHelper

  1. 第一步:在pom.xml文件中添加以下依赖:
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.2.1</version>
</dependency>
  1. 在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。

  1. 自定义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());
      }
    };
  }
}
  1. 在Mapper接口的方法上添加@Select注解,如下所示:
@Select("SELECT * FROM user")
List<User> getAllUser();
  1. 在需要分页的Mapper接口方法上添加@Select注解并传入分页参数,如下所示:
@Select("SELECT * FROM user")
List<User> getAllUser(Page<User> page);

至此,我们已经完成了手动集成PageHelper的示例。

以上就是Spring Boot集成PageHelper的两种方式的完整攻略了。希望能为你提供帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:spring boot集成pagehelper(两种方式) - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Spring security自定义用户认证流程详解

    下面为大家详细讲解“Spring security自定义用户认证流程详解”的完整攻略。 1. Spring Security简介 Spring Security是Spring框架的一个子项目,提供了完善的安全管理功能。它通过使用一系列过滤器来拦截网络请求,并对每个请求进行安全管理。 Spring Security提供了以下核心功能: 用户认证(Authent…

    Java 2023年5月20日
    00
  • java Spring整合Freemarker的详细步骤

    下面我将详细讲解Java Spring整合Freemarker的详细步骤。 简介 首先,需要了解什么是Freemarker和Spring。Freemarker是一种模版引擎,它允许我们在我们的应用程序中使用模版来生成动态内容。Spring是一个Java框架,它可以帮助我们更轻松地构建和管理Java应用程序的组件。 步骤 以下是整合Spring和Freemar…

    Java 2023年5月19日
    00
  • Java中不常用但很好用的开发小技巧分享

    下面是 “Java中不常用但很好用的开发小技巧分享” 的完整攻略: 一、使用Lambda表达式简化代码 Lambda表达式是Java 8中引入的新特性,它可以将方法当做参数进行传递,从而简化代码。比如,在Java 8之前,如果我们要对一个集合进行排序,通常需要实现Comparator接口,然后实现compare方法。而在Java 8中,我们可以使用Lambd…

    Java 2023年5月23日
    00
  • java开发 线上问题排查命令详解

    Java开发 线上问题排查命令详解 在Java应用线上运行过程中可能会遇到各种问题,例如应用启动失败、性能瓶颈等等。本文将介绍一些常用的Java开发线上问题排查命令,帮助开发人员更快速、准确地定位问题。 查看应用状态 jps jps命令用于列出Java应用进程的PID(进程ID)和名称,可用于检查应用是否正常启动并在运行。 jps 输出示例: 1234 Ap…

    Java 2023年5月27日
    00
  • MyBatis-Plus集成Druid环境搭建的详细教程

    下面我将为你介绍Mybatis-Plus集成Druid环境搭建的详细教程,包括环境搭建、配置和代码演示。首先,我们需要明确一下什么是Mybatis-Plus和Druid。 什么是MyBatis-Plus和Druid? MyBatis-Plus MyBatis-Plus(简称MP)是一个在MyBatis框架基础上的增强工具,省去了很多重复性的代码,提供了更为简…

    Java 2023年5月20日
    00
  • 客户端设置超时时间真的很重要

    当你的应用程序在向远程服务发出请求时,可能会因该服务无法正常响应或者延迟过高而产生“阻塞”,直到远程服务响应或者过期后才会返回响应。客户端设置超时时间是一种防止这种“阻塞”的方式,可以让应用程序在一定时间内等待远程服务响应,如果超过了设定的超时时间,就会自动取消该请求并返回超时错误信息,防止程序长时间无响应的问题发生。 客户端设置超时时间的步骤如下: 确定需…

    Java 2023年5月23日
    00
  • Java GUI编程实现在线聊天室

    Java GUI编程实现在线聊天室攻略 背景介绍 随着互联网的发展,人们越来越需要进行线上交流。在线聊天室应运而生,成为了人们日常交流的重要工具之一。本文介绍如何利用Java GUI编程实现一个简单的在线聊天室。 实现步骤 1. 创建GUI界面 使用Java Swing技术创建GUI界面,包括登录界面和聊天界面。其中登录界面包括用户名和密码输入框,登录按钮,…

    Java 2023年5月24日
    00
  • JSP 获取spring容器中bean的两种方法总结

    介绍JSP和Spring容器 JavaServer Pages(JSP)是一种在服务器上使用的Java技术,用于创建动态Web页面。Spring容器是一个轻量级的Java开发框架,用于协调Java应用中的对象和实现应用程序中不同层之间的松耦合。 JSP获取Spring容器中Bean的两种方法 Spring容器中的Bean可以被JSP使用,JSP可以通过以下两…

    Java 2023年6月16日
    00
合作推广
合作推广
分享本页
返回顶部