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日

相关文章

  • 防护黑客必学招数 SQL注入拦截-MYIIS-VIF助你一臂之力

    防护黑客必学招数 SQL注入拦截-MYIIS-VIF助你一臂之力 什么是SQL注入 SQL注入是一种常见的网络攻击方式,它在用户输入数据的时候,利用恶意代码使得后台数据库执行其不应该执行的语句。当程序没有对用户输入的数据进行有效检查时,黑客利用该漏洞可获取系统管理员权限、窃取重要信息等。 防止SQL注入的必要性 当网站存在SQL注入漏洞,攻击者可以以管理员的…

    database 2023年5月21日
    00
  • SQL(MSSQLSERVER)服务启动错误代码3414的解决方法

    SQL Server 是一种常用的关系型数据库管理系统。但在使用过程中,可能会遇到服务启动错误的问题,其中,错误代码 3414 是比较常见的一种。下面,我来为大家介绍一下详细的解决方法。 步骤一:查看错误日志 当 SQL Server 启动失败时,需要查看 下载 SQL Server 错误日志文件,以获取更多有关启动过程中出现的错误的详细信息。在日志文件中,…

    database 2023年5月18日
    00
  • Redis连接错误的情况总结分析

    我将为您详细讲解“Redis连接错误的情况总结分析”的完整攻略。 Redis连接错误的情况总结分析 1. Redis连接错误的原因及分类 Redis连接错误通常分为以下几种情况: 1.1. Redis服务未开启或无法访问1.2. Redis配置错误1.3. 网络问题 2. Redis服务未开启或无法访问 Redis服务未开启或无法访问是Redis连接错误中最…

    database 2023年5月22日
    00
  • MySQL按天分组统计一定时间内的数据实例(没有数据补0)

    MySQL按天分组统计一定时间内的数据实例(没有数据补0) 问题描述 在日常运营管理中,经常需要对某个时间范围内的数据进行按天分组统计,以便于对业务的整体情况进行分析。一般情况下,如果某天没有数据,我们需要把该天的数据补0,否则会影响整体统计结果的准确性。本文介绍如何使用MySQL进行按天分组统计一定时间内的数据,同时解决没有数据补0的问题。 实现思路 使用…

    database 2023年5月22日
    00
  • mongodb使用心得简单总结

    MongoDB使用心得简单总结 简介 MongoDB是一种流行的NoSQL数据库管理系统,它支持可扩展性、高性能、高可用性和灵活数据模型。它使用JSON类似的文档模型来存储数据,这让它非常适合存储动态数据。 安装 在使用MongoDB之前,必须先安装它。你可以在MongoDB官网上下载适合你操作系统的安装文件。安装完成后,启动MongoDB服务。 连接数据库…

    database 2023年5月22日
    00
  • Python使用Redis的完整攻略

    本文将详细讲解Python使用Redis的完整攻略。Redis是一款高性能的缓存系统,常用于解决应用系统瓶颈问题。在Python中,使用Redis可以很方便地实现缓存机制。 安装Redis 在使用Redis之前,需要先安装Redis。可以通过以下命令安装Redis: sudo apt-get install redis-server 或者通过官网下载Redi…

    Redis 2023年3月21日
    00
  • 浅谈Redis的事件驱动模型

    浅谈Redis的事件驱动模型 什么是事件驱动模型 事件驱动模型是指基于事件和回调的编程方式。在事件驱动模型中,程序并不会一直轮询某个IO处理器、关键组件或设备是否有新的操作。相反,程序在启动之后,可以设置事件监听器或回调函数来处理触发的事件。当事件发生时,相关的回调函数会被执行。这种模型使得程序能够实时响应事件和操作,避免了轮询等待事件的浪费。 Redis的…

    database 2023年5月22日
    00
  • linux二进制通用包安装mysql5.6.20教程

    关于“linux二进制通用包安装mysql5.6.20教程”的完整攻略,我将分为以下几个部分进行详细讲解。 一、准备工作 1. 下载MySQL二进制通用包 首先,我们需要从MySQL官网(https://dev.mysql.com/downloads/mysql/5.6.html#downloads)下载MySQL二进制通用包。下载时需要注意操作系统和系统架…

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