Mybatis-Plus分页插件使用

简介

在使用MyBatis-Plus分页插件之前需要配置拦截器(Interceptor),为什么?是因为MyBatis-Plus通过拦截器的方式实现了对MyBatis原有查询逻辑的增强,以便在查询数据库时自动添加分页条件,而无需在每个查询方法中手动编写分页逻辑。 

具体来说,MyBatis-Plus的分页拦截器(通常是PaginationInterceptor或其前身PaginationInnerInterceptor)在MyBatis的查询执行链路上插入了一个自定义的拦截点。当执行查询操作时,MyBatis-Plus的拦截器会捕获到这个查询请求,并检查是否有分页请求的参数(如页码、每页条数等)。如果检测到分页参数,拦截器会自动修改SQL语句,在SQL中添加分页的LIMIT子句(或其他数据库特有的分页语法),从而实现分页功能。

SELECT * FROM your_table LIMIT offset, rows_per_page;

其中,offset是起始行的偏移量(从0开始计数),rows_per_page是每页的行数。

配置分页拦截器的好处包括:

减少重复代码:开发者无需在每个查询方法中手动编写分页逻辑,只需要在全局配置中配置好分页拦截器,即可在项目中所有使用MyBatis-Plus进行数据库操作的地方享受分页功能。

提高开发效率:通过配置拦截器实现分页,使得分页功能的实现变得简单快捷,开发者可以更加专注于业务逻辑的实现。

易于维护:分页逻辑被封装在拦截器中,当需要修改分页逻辑或优化分页性能时,只需要修改拦截器的实现即可,而无需修改大量的业务代码。

支持多种数据库:MyBatis-Plus的分页拦截器会根据底层数据库的不同,自动调整分页SQL的语法,从而支持多种数据库的分页操作。

实现

在springboot项目中添加一个配置类:

创建了一个MybatisPlusInterceptor的实例,这是MyBatis-Plus提供的一个拦截器, 用于拦截SQL语句的执行,以便进行各种插件式的操作,比如分页、性能分析等。

 通过addInnerInterceptor方法向MybatisPlusInterceptor中添加了一个PaginationInnerInterceptor拦截器。 PaginationInnerInterceptor是MyBatis-Plus提供的分页插件,它会自动解析MyBatis-Plus提供的分页参数,并构造出相应的分页SQL语句,从而实现物理分页。 最后,这个方法返回了配置好的MybatisPlusInterceptor实例,Spring会将其注册为一个Bean,以便在需要的地方进行注入和使用。 

@Configuration //表明该类是一个配置类
public class MybatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor mpInterceptor = new MybatisPlusInterceptor();
        mpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return mpInterceptor;
    }
}

使用

@Service  
public class YourService {  
  
    @Autowired  
    private YourMapper yourMapper; // 一个Mapper接口来操作数据库  
  
    public IPage<YourEntity> paginate(int current, int size) {  
        // 创建一个分页对象,设置当前页和每页显示条数  
        Page<YourEntity> page = new Page<>(current, size);  
        // 调用Mapper中的方法进行查询,并传入分页对象,MyBatis-Plus会自动进行分页处理  
        List<YourEntity> list = yourMapper.selectPage(page, null); // 第二个参数是查询条件,这里传入null表示无条件查询  
        // 返回分页对象,它包含了分页信息和查询结果  
        return page;  
    }  
}

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值