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();

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值