MybatisPlus实现分页查询

MybatisPlus通过插件简化了分页查询

1.添加依赖

首先,确保您的项目中已经添加了MybatisPlus的依赖。

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.3</version>
</dependency>

2.配置分页插件

在Spring Boot项目中,您需要配置MybatisPlus的分页插件。创建一个配置类:

@Configuration
public class MybatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

3.创建实体类

假设我们有一个User实体类:



@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

​

4.创建Mapper接口

创建一个UserMapper接口,继承BaseMapper:

public interface UserMapper extends BaseMapper<User> {
}

5.实现分页查询

现在,您可以在Service层或Controller层中使用Page对象来实现分页查询:

//创建service接口
public interface UserService extends IService{
    IPage<User> getUserPage(int current, int size);
}
-------------------------------------------------
@Service
public class UserServiceimpl implements UserService {
    @Autowired
    private UserMapper userMapper;

    @Override
    public IPage<User> getUserPage(int current, int size) {
        Page<User> page = new Page<>(current, size);
        return userMapper.selectPage(page, null);
    }
}

在这个例子中:

  • current是当前页码
  • size是每页显示的记录数
  • new Page<>(current, size)创建一个分页对象
  • userMapper.selectPage(page, null)执行分页查询,第二个参数为null表示没有额外的查询条件

6.在Controller中使用

在Controller层调用service层中的分页功能

@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/page")
    public IPage<User> getUserPage(@RequestParam(defaultValue = "1") int current,
                                   @RequestParam(defaultValue = "10") int size) {
        return userService.getUserPage(current, size);
    }
}

自定义查询条件

如果需要添加自定义查询条件,如按名字模糊匹配,可以使用QueryWrapper:

public IPage<User> getUserPage(int current, int size, String name) {
    Page<User> page = new Page<>(current, size);
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.like(StringUtils.isNotBlank(name), "name", name);
    return userMapper.selectPage(page, queryWrapper);
}
  • StringUtils.isNotBlank(name) 用于判断 name 是否为空字符串,只有当 name 不为空时才会添加模糊匹配条件。
  • "name" 表示要匹配的字段名,这里是 User 对象的 name 属性。
  • name 表示要匹配的值,即用户输入的用户名。

 获取分页信息

  • getCurrent(): 获取当前页码。
  • getSize(): 获取每页显示条数。
  • getTotal(): 获取总条数。
  • getPages(): 获取总页数。
  • hasPrevious(): 判断是否有上一页。
  • hasNext(): 判断是否有下一页。

MySQL实现分页查询-CSDN博客

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值