MyBatis-Plus分页查询的方法有哪些

发布时间:2022-03-07 09:58:57 作者:iii
来源:亿速云 阅读:469

MyBatis-Plus分页查询的方法有哪些

MyBatis-Plus 是 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,简化开发、提高效率。其中,分页查询是日常开发中非常常见的需求。MyBatis-Plus 提供了多种分页查询的方法,本文将详细介绍这些方法及其使用场景。

1. 使用 Page 对象进行分页查询

Page 是 MyBatis-Plus 提供的一个分页对象,通过它可以方便地进行分页查询。

1.1 基本用法

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

public void testPage() {
    // 创建分页对象,当前页为1,每页显示10条
    Page<User> page = new Page<>(1, 10);
    
    // 创建查询条件
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.lambda().eq(User::getAge, 20);
    
    // 执行分页查询
    IPage<User> userPage = userMapper.selectPage(page, queryWrapper);
    
    // 获取分页数据
    List<User> userList = userPage.getRecords();
    long total = userPage.getTotal();
    long pages = userPage.getPages();
    
    System.out.println("总记录数:" + total);
    System.out.println("总页数:" + pages);
    System.out.println("当前页数据:" + userList);
}

1.2 说明

2. 使用 PaginationInterceptor 进行分页

PaginationInterceptor 是 MyBatis-Plus 提供的一个分页插件,通过配置该插件可以实现自动分页。

2.1 配置 PaginationInterceptor

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisPlusConfig {

    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}

2.2 使用分页插件

配置好 PaginationInterceptor 后,在查询时只需要传入 Page 对象即可,MyBatis-Plus 会自动进行分页。

public void testPaginationInterceptor() {
    // 创建分页对象,当前页为1,每页显示10条
    Page<User> page = new Page<>(1, 10);
    
    // 执行分页查询
    IPage<User> userPage = userMapper.selectPage(page, null);
    
    // 获取分页数据
    List<User> userList = userPage.getRecords();
    long total = userPage.getTotal();
    long pages = userPage.getPages();
    
    System.out.println("总记录数:" + total);
    System.out.println("总页数:" + pages);
    System.out.println("当前页数据:" + userList);
}

2.3 说明

3. 使用 PageHelper 进行分页

PageHelper 是一个常用的分页插件,MyBatis-Plus 也支持与 PageHelper 集成使用。

3.1 配置 PageHelper

import com.github.pagehelper.PageHelper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;

@Configuration
public class PageHelperConfig {

    @Bean
    public PageHelper pageHelper() {
        PageHelper pageHelper = new PageHelper();
        Properties properties = new Properties();
        properties.setProperty("offsetAsPageNum", "true");
        properties.setProperty("rowBoundsWithCount", "true");
        properties.setProperty("reasonable", "true");
        pageHelper.setProperties(properties);
        return pageHelper;
    }
}

3.2 使用 PageHelper 进行分页

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;

public void testPageHelper() {
    // 开始分页,当前页为1,每页显示10条
    PageHelper.startPage(1, 10);
    
    // 执行查询
    List<User> userList = userMapper.selectList(null);
    
    // 获取分页信息
    PageInfo<User> pageInfo = new PageInfo<>(userList);
    
    System.out.println("总记录数:" + pageInfo.getTotal());
    System.out.println("总页数:" + pageInfo.getPages());
    System.out.println("当前页数据:" + pageInfo.getList());
}

3.3 说明

4. 使用 LambdaQueryWrapper 进行分页查询

LambdaQueryWrapper 是 MyBatis-Plus 提供的一个基于 Lambda 表达式的查询条件构造器,可以简化查询条件的编写。

4.1 基本用法

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;

public void testLambdaQueryWrapper() {
    // 创建分页对象,当前页为1,每页显示10条
    Page<User> page = new Page<>(1, 10);
    
    // 创建查询条件
    LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
    lambdaQueryWrapper.eq(User::getAge, 20);
    
    // 执行分页查询
    IPage<User> userPage = userMapper.selectPage(page, lambdaQueryWrapper);
    
    // 获取分页数据
    List<User> userList = userPage.getRecords();
    long total = userPage.getTotal();
    long pages = userPage.getPages();
    
    System.out.println("总记录数:" + total);
    System.out.println("总页数:" + pages);
    System.out.println("当前页数据:" + userList);
}

4.2 说明

5. 使用 PageWrapper 进行自定义分页查询

在某些场景下,可能需要自定义分页查询逻辑,此时可以结合 PageWrapper 进行自定义分页查询。

5.1 基本用法

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

public void testCustomPage() {
    // 创建分页对象,当前页为1,每页显示10条
    Page<User> page = new Page<>(1, 10);
    
    // 创建查询条件
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.lambda().eq(User::getAge, 20);
    
    // 执行自定义分页查询
    IPage<User> userPage = userMapper.selectCustomPage(page, queryWrapper);
    
    // 获取分页数据
    List<User> userList = userPage.getRecords();
    long total = userPage.getTotal();
    long pages = userPage.getPages();
    
    System.out.println("总记录数:" + total);
    System.out.println("总页数:" + pages);
    System.out.println("当前页数据:" + userList);
}

5.2 说明

6. 总结

MyBatis-Plus 提供了多种分页查询的方法,开发者可以根据实际需求选择合适的方式。无论是使用 Page 对象、PaginationInterceptor 插件,还是与 PageHelper 集成,MyBatis-Plus 都能满足大多数分页查询的需求。对于复杂的业务场景,还可以结合 Wrapper 进行自定义分页查询,灵活性非常高。

通过本文的介绍,相信大家对 MyBatis-Plus 的分页查询方法有了更深入的了解,能够在实际开发中灵活运用这些方法,提高开发效率。

推荐阅读:
  1. mysql分页查询有什么作用
  2. MySQL实现分页查询的方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mybatis plus

上一篇:SpringCloud服务注册中的nacos怎么实现

下一篇:如何解决Bioconductor安装软件比较慢的问题

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》