当前位置: 首页 > article >正文

Mybatisplus如何使用selectPage

在 MyBatis-Plus 中,selectPage 方法用于执行分页查询。它结合了 Page 对象和条件构造器(如 QueryWrapperLambdaQueryWrapper),以实现带条件的分页查询。下面是如何使用 selectPage 的详细步骤:

步骤 1:配置分页插件

首先,确保你已经在 Spring Boot 应用中配置了 MyBatis-Plus 的分页插件。这通常是在你的主应用类或配置类中完成的。

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyBatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 添加分页拦截器
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return interceptor;
    }
}

步骤 2:创建 Page 对象

接下来,在你需要进行分页查询的地方创建一个 Page<T> 对象,其中 T 是你希望返回的对象类型。你可以指定当前页码和每页显示的数量来初始化这个对象。

// 假设你有一个实体类 User
long current = 1; // 当前页码
long size = 10;   // 每页显示的数量
Page<User> page = new Page<>(current, size);

步骤 3:构建查询条件

使用 LambdaQueryWrapperQueryWrapper 构建查询条件。这里我们使用 LambdaQueryWrapper 来演示。

LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getAge, 20); // 示例条件

步骤 4:调用 selectPage 方法

最后,通过 Mapper 接口调用 selectPage 方法,并传入 Page<T>Wrapper 参数。

// userMapper 是你定义的 Mapper 接口
IPage<User> userPage = userMapper.selectPage(page, queryWrapper);

// 获取分页后的结果列表
List<User> userList = userPage.getRecords();

// 获取总记录数等信息
long total = userPage.getTotal();

完整示例代码

将上述步骤组合起来,完整的分页查询代码如下:

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @Autowired
    private UserMapper userMapper;

    @GetMapping("/users")
    public void getUsers() {
        long current = 1; // 当前页码
        long size = 10;   // 每页显示的数量
        Page<User> page = new Page<>(current, size);

        LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(User::getAge, 20); // 示例条件

        IPage<User> userPage = userMapper.selectPage(page, queryWrapper);

        List<User> userList = userPage.getRecords();
        long total = userPage.getTotal();

        // 这里可以添加逻辑处理分页结果
    }
}

http://www.kler.cn/a/452291.html

相关文章:

  • Redis学习(五)优惠券秒杀2——分布式锁
  • 最新的强大的文生视频模型Pyramid Flow 论文阅读及复现
  • 计算机毕业设计Python+Spark知识图谱酒店推荐系统 酒店价格预测系统 酒店可视化 酒店爬虫 酒店大数据 neo4j知识图谱 深度学习 机器学习
  • 条款17 理解特殊成员函数的生成
  • 《Java核心技术I》Swing的网格包布局
  • Batch_Size对神经网络训练效率的影响:一个PyTorch实例分析
  • 接口测试Day03-postman断言关联
  • HuaWei、NVIDIA 数据中心 AI 算力对比
  • 谈谈JSON
  • DigitalOcean Droplet 云服务器:新增自动扩展池功能
  • npm : 无法加载文件 D:\Nodejs\node_global\npm.ps1,因为在此系统上禁止运行脚本
  • openwrt 负载均衡方法 openwrt负载均衡本地源接口
  • 08 Django - Django媒体文件静态文件文件上传
  • Ubuntu存储硬盘扩容-无脑ChatGPT方法
  • 嵌入式学习-QT-Day06
  • 网站使用站群服务器都有哪些好处?
  • Vue学习手册03 Vue虚拟DOM详解
  • mysql,数据库主从同步搭建
  • 帝国cms电脑pc站url跳转到手机站url的方法
  • 20241225在ubuntu22.04.5下使用smartmontools命令查看ssd的寿命
  • Diffusers使用笔记
  • 2024年河北省职业院校技能大赛云计算应用赛项赛题第2套(容器云)
  • 从tryLock()源码来出发,解析Redisson的重试机制和看门狗机制
  • 2024年OpenTiny年度人气贡献者评选正式开始
  • MFC用List Control 和Picture控件实现界面切换效果
  • leetcode hot100 翻转二叉树