文章 SSMP整合案例(3) 创建数据层并在测试类中运行数据库增删查改操作我们编写了MyBatis-Plus以Druid为数据源的方式 做了数据库的增删查改操作
那么 下面我们继续写 分页查询
我们 先写这样一段代码
bookDao.selectPage()
selectPage就是BaseMapper提供给我们的分页查询函数 但他需要参数
我们按住Ctrl点进去
我们可以看到 他的第一个参数 是一个IPage类型的
我们直接编写测试类代码如下
package com.example.bookconfig;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.bookconfig.dao.bookDao;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class BookConfigApplicationTests {
@Autowired
private bookDao bookDao;
@Test
void contextLoads() {
IPage page = new Page(1,1);
bookDao.selectPage(page,null);
}
}
这里 我们通过Page实现类 实现了IPage接口 那么 作为分页 他需要你告诉它 你要查第几页 每页展示多少条
这里 我们告诉它 我们要查第一页 每页一条 第二个参数是查询条件 我们暂时不写 就给个unll
代码运行结果如下
我们会发现不太对啊
这里 MP做了限制 我们需要写一个专门做配置的类 处理MP的拦截器
我们在启动类同目录 下 创建一个文件夹 config
下面创建一个 MPConfig java类
参考待明日续爱
package com.example.bookconfig.config;
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(){
MybatisPlusInterceptor MybatisPlusInterceptor = new MybatisPlusInterceptor();
MybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return MybatisPlusInterceptor;
}
}
我们先用Configuration声明这个为一个配置类 然后 通过Bean 将他交给Spring去管理
然后 通过addInnerInterceptor 加入配合 开启PaginationInnerInterceptor
然后 我们再次运行测试类 运行结果如下
这次结果就对了 他是查到第一页 查一条
然后 我们试着将这两改成 第二页
查第二页 查一条 显然数据没有问题
这里 因为我的表数据只有两条 所以 目前也只能这样先测试一下了
但是 比较奇葩的是 selectPage 方法的返回值 还是个IPage类型的对象
那么 我们怎么拿到查询返回的结果呢?
首先 我们还是要看 我们带进去的 这个 IPage 对象
用它.get 后面的提示就出来了
首先 getCurrent 代表当前页 指的就是 我们当前传递的这个2
getSize 代表每页展示的数量 就是我们这个传递的第二个参数 1 每页查询一条
getTotal 查询结果的长度 就是 实际查出来了多少条数据 那么 我们这里显然是一条
然后 我们仔细看看 getRecords 后面对应的类型
那么 查询出来的数据怎么获取 就不用我教了吧?
我们这样打印出来
IPage page = new Page(2,1);
bookDao.selectPage(page,null);
System.out.println("----page.getRecords()----");
System.out.println(page.getRecords());
运行结果如下