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

针对“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日

相关文章

  • Django中操作Redis

    一 创建redis连接池 redis_pool.py pool = redis.ConnectionPool(host=’10.211.55.4′, port=6379) 二 引入连接池 import redis from django.shortcuts import render from utils.redis_pool import POOL def…

    Redis 2023年4月12日
    00
  • 浅谈MySQL和MariaDB区别(mariadb和mysql的性能比较)

    浅谈MySQL和MariaDB区别 MySQL和MariaDB的概述 MySQL和MariaDB是两种关系型数据库管理系统。MySQL于1995年发布,目前被Oracle公司所拥有和维护。MariaDB是MySQL的分支,由MySQL的初创公司之一Monty Program AB主导开发,发布于2009年。MariaDB在功能上和MySQL基本一致,但也有一…

    database 2023年5月22日
    00
  • 怎么提升索引的使用效率,设计出更高效的索引?

    索引是数据库系统中的重要概念之一,它可以提升数据库的检索和有效的存储,能够加快数据检索的速度,缩短数据库查询的响应时间,提高数据库的性能。 虽然索引的应用对性能的提升有很大的作用,但是索引设计不合理也会适得其反,导致数据库查询性能变差。因此要提升索引的使用效率,需要设计出更高效的索引,以下是几个方面的详细说明: 合理选择索引字段 在设计索引时,应该注意合理选…

    MySQL 2023年3月10日
    00
  • CentOS命令行下装oracle 12c的方法(命令行模式安装)

    CentOS命令行下装oracle 12c的方法可以分为以下步骤: 1.检查系统配置要求和安装依赖包 在CentOS 7或者8系统中我们需要检查以下的系统配置要求: 需要一个2核以上、至少4GB内存的服务器 需要预留25GB以上硬盘空间用于安装 需要满足安装Oracle 12c的预装条件,安装请使用以下命令 sudo yum install -y oracl…

    database 2023年5月22日
    00
  • Oracle 中 decode 函数用法

    当我们在开发 Oracle 数据库时,需要对数据进行操作,其中一个非常常用的函数是decode()。decode()函数可以根据指定的条件,返回不同的结果。本文将详细讲解decode()函数的用法,希望对大家学习和开发Oracle数据库有所帮助。 1. decode()函数基本语法 decode()函数的基本语法如下: decode(expression, …

    database 2023年5月21日
    00
  • php SQLite学习笔记与常见问题分析

    PHP SQLite学习笔记与常见问题分析 SQLite是最轻量级的关系型数据库管理系统之一。它提供了非常简单的控制台和API,支持所有编程语言(如Python,Java和PHP)。在本篇文章中,我们将讲解如何使用PHP连接SQLite数据库以及遇到的一些常见问题。 安装SQLite 首先,您需要在系统中安装SQLite。在Linux上,您可以使用以下命令安…

    database 2023年5月22日
    00
  • Oracle 闪回技术详细介绍及总结

    Oracle 闪回技术详细介绍及总结 什么是Oracle 闪回技术 Oracle 闪回技术是Oracle数据库提供的一项用于快速恢复数据库的技术。闪回技术能够帮助数据库管理员快速回滚数据库到某个时间点,并撤销单个表或整个数据库的操作,而不需要恢复整个数据库。此外,闪回技术还能够查找和恢复被误删除或更新数据的情况。 闪回技术的优点 相比于传统的恢复方法,闪回技…

    database 2023年5月21日
    00
  • seata-1.4.0安装及在springcloud中使用详解

    seata-1.4.0安装及在springcloud中使用详解 Seata是一款分布式事务解决方案,提供了对Spring Cloud、Dubbo等微服务框架的支持。本篇攻略将详细讲解Seata-1.4.0的安装及在Spring Cloud中的使用方法。 安装Seata-1.4.0 下载Seata-1.4.0 可以从官网 http://seata.io/zh-…

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