本章导学:
- 使用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;
}
再次运行测试看看结果
大功告成