Bootstrap

Mybatis-Plus(插件篇 ==> 分页插件

本章导学:

  • 使用MP为我们提供的分页插件

MP为我们提供了如下的一个方法selectPage() 

我们点进去看看这个方法需要什么参数

显而易见,我们需要传递一个泛型P,这个泛型继承于IPage对象,和一个条件构造器 

我们点进去IPage看看

当前的IPage是一个接口,我们看看它有哪些实现类 

发现它只有一个Page实现类,我们进去看看这个Page类是什么东东

哦~原来这个Page为我们封装好了页码,数据条数,页数, 等信息

这个构造器传入页码和每页展示条数就好了


我们把测试代码写完,看一下运行结果


    /**
     * 分页测试
     */
    @Test
    public void test01(){
        //第三页,每页展示2条数据
        IPage ipage = new Page(3,2);
        IPage page = mqDao.selectPage(ipage, null);
        System.out.println("当前页码值:"+page.getCurrent());
        System.out.println("每页显示数:"+page.getSize());
        System.out.println("一共多少页:"+page.getPages());
        System.out.println("一共多少条数据:"+page.getTotal());
        System.out.print("数据:");
        page.getRecords().forEach(System.out::println);
    }

  

奇怪的是,它查询出来的数据还是所有数据,并没有起到我们的分页效果

我们都知道分页的原理是where limit ?,?

那是不是只要在这条查询语句后加上where条件就好了,我们可以把这条语句拦截下来,为它添加我们的where条件,这也是AOP思想的提现(在原有代码上只进行增强,不做修改)

我们新建一个配置类

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 MpConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        //1,定义Mp拦截器
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        //2,添加具体的拦截器,这里添加的为分页拦截器
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return mybatisPlusInterceptor;
    }

再次运行测试看看结果

大功告成 

;