springboot整合mybatis分页拦截器的问题小结

yizhihongxing

针对“springboot整合mybatis分页拦截器的问题小结”这个话题,下面是完整的攻略:

1. 分页拦截器是什么?

分页拦截器是MyBatis框架提供的功能强大的拦截器,可以在SQL执行时拦截分页查询的参数,并且生成需要查询的sql语句。分页拦截器分为两种,一种是PageHelper,一种是PaginationInterceptor

2. 如何整合分页拦截器?

在Spring Boot项目中,整合分页拦截器非常简单,只需在pom.xml文件中添加对应的依赖即可。这里以集成PageHelper为例:

Step 1: 引入依赖

pom.xml文件中添加PageHelper依赖:

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.5</version>
</dependency>

Step 2: 配置拦截器

application.yml文件中添加PageHelper的配置项:

pagehelper:
  helperDialect: mysql
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql

Step 3: 使用分页插件

在需要分页查询的方法中加入PageHelper插件的使用,如下所示:

@Service
public class UserServiceImpl implements UserService {

    private final UserMapper userMapper;

    public UserServiceImpl(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    @Override
    public PageInfo<User> getUsers(int pageNum, int pageSize) {
        PageHelper.startPage(pageNum, pageSize);
        List<User> userList = userMapper.selectUsers();
        return new PageInfo<>(userList);
    }
}

3. 分页拦截器的常用配置项

helperDialect

用于设置数据库的类型,支持的数据库有:Oracle, MySQL, MariaDB, SQLite, Hsqldb, PostgreSQL, DB2, SyBase, Derby 等。

pagehelper:
  helperDialect: mysql

offsetAsPageNum

将RowBounds第一个参数offset当成pageNum页码使用.

pagehelper:
  offsetAsPageNum: true

rowBoundsWithCount

设置为true时,使用RowBounds分页会进行count查询.

pagehelper:
  rowBoundsWithCount: true

reasonable

是否合理化分页参数,设置为true时,页码小于1会查询第一页,大于最大页码会查询最后一页.

pagehelper:
  reasonable: true

supportMethodsArguments

支持通过 Mapper 接口参数来传递 PageRowBounds 参数(用于支持更复杂的分页情况).

pagehelper:
  supportMethodsArguments: true

params

你可以通过该属性指定自定义的参数名,例如使用 {{start}} 和 {{end}} 作为分页参数名称.

pagehelper:
  params: start=startRow;pageSize=pageSize;

4. 示例

4.1 示例一

我们以查询用户列表为例,使用 PageHelper 进行分页:

@Service
public class UserServiceImpl implements UserService {

    private final UserMapper userMapper;

    public UserServiceImpl(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    @Override
    public PageInfo<User> getUsers(int pageNum, int pageSize) {
        PageHelper.startPage(pageNum, pageSize);
        List<User> userList = userMapper.selectUsers();
        return new PageInfo<>(userList);
    }
}

4.2 示例二

我们以查询文章列表为例,使用 PaginationInterceptor 进行分页:

@Configuration
public class MybatisPlusConfig {

    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}
@Service
public class ArticleServiceImpl implements ArticleService {

    private final ArticleMapper articleMapper;

    public ArticleServiceImpl(ArticleMapper articleMapper) {
        this.articleMapper = articleMapper;
    }

    @Override
    public IPage<Article> getArticles(int pageNum, int pageSize) {
        IPage<Article> page = new Page<>(pageNum, pageSize);
        return articleMapper.selectPage(page, null);
    }
}

至此,“springboot整合mybatis分页拦截器的问题小结”完整攻略就讲解完毕了,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot整合mybatis分页拦截器的问题小结 - Python技术站

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

相关文章

  • mysql 恢复数据时中文乱码

    mysql恢复数据时中文乱码,解决办法。 用source命令导入mysql数据库怎么设置中文编码 1.导出数据时指定编码在导出mysql sql执行文件的时候,指定一下编码格式: mysqldump -uroot -p –default-character-set=utf8 mo(dbname) > E://xxxx.sql 2.导入数据时指定编码 …

    MySQL 2023年4月12日
    00
  • MySQL线上死锁分析实战

    MySQL线上死锁分析是一个非常重要的工作,对于数据库管理员和开发者来说都具有重要的意义,下面是一个完整的攻略: 1. 收集信息 在进行死锁分析之前,我们需要收集一些信息来确定死锁的原因,包括: 发生死锁的时间 相关的SQL语句 数据库服务的版本 数据库表结构 不同的连接类型 2. 查看日志文件 在MySQL中,我们可以通过查看日志文件来获取死锁的相关信息。…

    database 2023年5月22日
    00
  • 如何使用Python在MySQL中删除表?

    要使用Python在MySQL中删除表,可以使用Python的内置模块sqlite3或第三方库mysql-connector-python。以下是使用mysql-connector-python在MySQL中删除表的完整攻略: 连接 要连接到MySQL,需要提供MySQL的主机、用户名、和密码。可以使用以下代码连接: mysql.connector mydb…

    python 2023年5月12日
    00
  • express框架,报错:“Cannot set headers after they are sent to the client”,解决方法总结 原创

    Express框架是一款非常流行的Node.js框架,它极大地简化了Web应用程序开发的工作。然而,在使用Express框架时,有时你可能会遇到以下报错: Cannot set headers after they are sent to the client 这个错误提示表示在向客户端(浏览器)发送响应后,又尝试向客户端发送响应头信息。这通常是由于在应用程…

    database 2023年5月22日
    00
  • MySql 存储引擎和索引相关知识总结

    “MySql 存储引擎和索引相关知识总结”是一个非常重要的主题,因为它关系到我们在使用MySQL的过程中如何进行数据存储和查询优化。在这里我们将会对这个主题进行一些具体的讲解和示范,帮助大家更好地理解和掌握。 什么是存储引擎 存储引擎是MySQL中用来处理存储和管理数据的组件,它不仅决定了数据的存储方式和读取方式,还对数据库的性能产生重要影响。MySQL中常…

    database 2023年5月22日
    00
  • SQL Server 2005中更改sa的用户名的方法

    要在SQL Server 2005中更改”sa”用户的用户名,可以使用以下步骤: 步骤一:确保有其他管理员账户 首先,您需要确保在SQL Server 2005中至少存在一个其他管理员账户,以便在更改”sa”用户的用户名时不会丢失对其进行管理的能力。如果没有其他管理员账户,请创建一个。 步骤二:创建一个临时管理员账户 接下来,我们需要创建一个临时管理员账户,…

    database 2023年5月21日
    00
  • Linux下安装Oracle 11g出现prvf-0002错误解决办法

    下面给您介绍在Linux系统下安装Oracle 11g时遇到prvf-0002错误的解决方法。 问题描述 在安装Oracle 11g时,可能会遇到prvf-0002错误: Checking Kernel Parameters: Minimum required value of shmmax is more than the allowed value. C…

    database 2023年5月22日
    00
  • MySQL 5.7.22 二进制包安装及免安装版Windows配置方法

    下面是我为你准备的“MySQL 5.7.22 二进制包安装及免安装版Windows配置方法”的完整攻略: 1. 下载MySQL 5.7.22 二进制包和免安装版MySQL 首先,你需要到MySQL官网下载MySQL 5.7.22二进制包和免安装版MySQL(压缩包格式)。接着将它们解压到本地目录。 2. 配置环境变量 接下来,在配置MySQL环境时,需要将M…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部