概要
今天跟着视频做项目,做的是分页功能,视频里使用的是Mybatis技术。但是被动态sql劝退了,虽然学过,但是写一遍好累。所以我就自己改用了MybatisPlus技术来进行分页。下面是具体的步骤。
整体架构流程
一.导入MybatisPlus的起步依赖
在使用任何的第三方技术之前,应先在spring boot的pom文件中导入相关依赖。
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
二.在数据层,服务层以及服务层的实现类继承对应父类
三.分页功能的实现需要使用分页拦截器
@Configuration
public class MPConfig {
@Bean
public MybatisPlusInterceptor interceptor(){
//定义MP拦截器
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//添加分页拦截器
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
}
MyBatis-Plus的分页拦截器(PaginationInterceptor)是用于拦截SQL执行过程中的分页查询操作的工具。它的作用是在执行SQL查询时,自动拦截分页参数,并在SQL语句中添加分页信息,以实现分页查询功能。
具体来说,分页拦截器会拦截执行的查询语句,从中提取出分页相关的参数,如当前页码、每页显示数量等,然后通过修改SQL语句,在查询结果中只返回符合分页条件的数据。这样,我们就可以通过简单的配置和使用分页拦截器来实现分页查询,而无需手动编写复杂的SQL语句。
四.编写分页代码
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
/**
*员工分页查询
*这里的参数使用了员工分页查询数据模型,包含三个参数:姓名,页数,每页记录数
*/
public Result<Page> page(EmployeePageQueryDTO queryDTO){
log.info("接收到的数据是:{}",queryDTO);//测试能否接受到数据
//构造分页构造器
Page<Employee> pageInfo = new Page<>(queryDTO.getPage(),queryDTO.getPageSize());
//构造条件构造器
LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(queryDTO.getName() != null,Employee::getName,queryDTO.getName());
//添加排序条件
queryWrapper.orderByDesc(Employee::getCreateTime);
//查询
employeeService.page(pageInfo,queryWrapper);
return Result.success(pageInfo);
代码分析:
1. 查看接口文档可知,三个请求参数不是json类型,又被封装成dto,所以参数前不用加注解,SpringMVC能识别。
2.从dto中取出页码和每页记录数,通过构造器构造一个Page对象,再从过LambdaQueryWrapper来设置条件,这里有个好处就是模糊匹配的时候可以先判断条件是否成立从而决定是否拼接此过滤条件,而不用像mybatis一样去手动拼接动态sql。
3.通过service调用page方法,将page对象和过滤对象作为参数传过去。
4.最后返回同一类型,并将Page对象返回。Page对象中的作用主要有:
-
分页参数:Page对象中包含了当前页码、每页显示数量等分页参数,可以通过Page对象设置或获取这些参数。通过Page对象传递分页参数,可以方便地在代码中控制分页查询的行为。
-
分页结果:Page对象还包含了查询结果的分页信息,包括总记录数、总页数等。在执行分页查询后,通过Page对象可以获取到完整的分页信息,便于展示和处理。
-
分页查询:使用Page对象可以直接进行分页查询操作。通过调用MyBatis-Plus提供的分页查询方法,将Page对象作为参数传入,可以实现自动的分页查询功能。查询结果会被封装在Page对象中返回,包括分页参数和分页信息。
小结
总的来说使用SpringBoot整合MP技术来进行分页并不复杂,但需要通过多多练习才能熟练掌握。