MyBatis 的 3 种分页方式

简介: MyBatis 的 3 种分页方式

MyBatis 是一个优秀的持久层框架,提供了丰富的数据库操作功能。在实际开发中,数据分页是一个常见需求。MyBatis 提供了多种方式来实现数据分页,本文将介绍其中的 3 种常用方式。

Limit 和 Offset 分页

在传统的 SQL 中,我们可以使用 LIMITOFFSET 关键字实现分页。这种方式能够方便地控制返回结果的数量和偏移量。

@Mapper
public interface UserMapper {
   
   
    List<User> getUsersByPage(int limit, int offset);
}

在上述代码中,我们定义了一个名为 getUsersByPage 的方法,该方法接收 limitoffset 两个参数。通过使用 LIMITOFFSET 关键字,我们可以在 SQL 查询中指定要返回的记录数及其偏移量。

RowBounds 分页

除了使用 LIMITOFFSET 进行分页之外,MyBatis 还提供了 RowBounds 类来实现分页。RowBounds 是 MyBatis 提供的一个用于控制查询结果集范围的对象。

@Mapper
public interface UserMapper {
   
   
    List<User> getUsersByPage(RowBounds rowBounds);
}

在上述代码中,我们将 RowBounds 对象作为参数传递给数据库查询方法。通过设置 offsetlimit 属性,我们可以控制返回结果的数量和偏移量。

int offset = 0;
int limit = 10;
RowBounds rowBounds = new RowBounds(offset, limit);
List<User> users = userMapper.getUsersByPage(rowBounds);

在实际调用时,我们可以创建一个 RowBounds 对象,并设置相应的 offsetlimit 值。然后将该对象传递给分页查询方法,即可实现数据分页。

PageHelper 插件

除了上述两种方式之外,还有一个非常强大的分页插件可供使用,那就是 MyBatis 的 PageHelper。PageHelper 是一个开源的 MyBatis 分页插件,提供了丰富的分页功能和易于使用的 API。

首先,我们需要引入 PageHelper 的依赖:

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.2.1</version>
</dependency>

然后,在 Spring Boot 配置类中配置 PageHelper:

@Configuration
public class MyBatisConfig {
   
   
    @Bean
    public PageInterceptor pageInterceptor() {
   
   
        PageInterceptor pageInterceptor = new PageInterceptor();
        Properties properties = new Properties();
        properties.setProperty("helperDialect", "mysql");
        pageInterceptor.setProperties(properties);
        return pageInterceptor;
    }

    @Bean
    public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource, PageInterceptor pageInterceptor) throws IOException {
   
   
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);

        // 添加 PageInterceptor 插件
        Interceptor[] plugins = new Interceptor[] {
   
   pageInterceptor};
        sessionFactory.setPlugins(plugins);

        return sessionFactory;
    }
}

在上述配置中,我们创建了一个名为 pageInterceptorPageInterceptor Bean,并设置了相关属性,如数据库方言等。

最后,在需要分页的查询方法上使用 @com.github.pagehelper.PageHelper 注解即可实现分页功能:

@Mapper
public interface UserMapper {
   
   
    @PageHelper(startPage = 1, pageSize = 10)
    List<User> getUsersByPage();
}

在上述代码中,@PageHelper 注解用于标记要进行分页的方法。通过设置 startPagepageSize 属性,我们可以指定当前页数和每页记录数。

总结:

本文介绍了 MyBatis 中的 3 种常用分页方式:Limit 和 Offset 分页、RowBounds 分页以及 PageHelper 插件。每种方式都有各自的优劣和适用场景,开发人员可以根据具体需求选择合适的分页方式。

目录
相关文章
|
1月前
Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)
Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)
23 1
|
4月前
|
SQL Java 数据库连接
mybatis常见分页技术和自定义分页原理实战
mybatis常见分页技术和自定义分页原理实战
|
30天前
|
SQL Java 数据库连接
Mybatis是如何实现分页功能的
Mybatis是如何实现分页功能的
10 0
|
5月前
|
SQL 搜索推荐 Java
MyBatis分页插件PageHelper的使用及MyBatis的特殊符号---详细介绍
MyBatis分页插件PageHelper的使用及MyBatis的特殊符号---详细介绍
73 0
|
2月前
|
XML 监控 druid
【Java专题_02】springboot+mybatis+pagehelper分页插件+druid数据源详细教程
【Java专题_02】springboot+mybatis+pagehelper分页插件+druid数据源详细教程
|
2月前
|
SQL Java 关系型数据库
|
3月前
|
SQL Oracle 关系型数据库
mybatis-3.分页
mybatis-3.分页
|
3月前
|
Java 数据库连接 mybatis
Mybatis之分页插件
【1月更文挑战第5天】 一、分页插件使用步骤 1、添加依赖 2、配置分页插件 二、分页插件的使用 1、开启分页功能 2、分页相关数据 方法一:直接输出 方法二使用PageInfo 常用数据:
50 1
|
3月前
|
Java 数据库连接 Maven
MyBatis分页插件
MyBatis分页插件
|
3月前
|
Java 关系型数据库 MySQL
一文彻底搞懂Mybatis系列(十七)之MyBatis使用分页插件PageHelper
一文彻底搞懂Mybatis系列(十七)之MyBatis使用分页插件PageHelper