文章目录
-
- [Mybatis Plus自带分页和PageHelper有什么区别?](#Mybatis Plus自带分页和PageHelper有什么区别?)
-
- [Mybatis Plus整合PageHelper分页](#Mybatis Plus整合PageHelper分页)
- springboot自定义拦截器获取分页参数
-
- [spring boot下配置mybatis-plus分页插件](#spring boot下配置mybatis-plus分页插件)
- 单表分页查询
- 自定义sql分页查询
- PageHelper
- 参考
Mybatis Plus自带分页和PageHelper有什么区别?
网上描述:
Mapper Plus自带分页PaginationInterceptor对象,虽然说目前没有什么问题,并且使用简单,但是个人感觉有个弊端:目前个人使用中,想要用Mapper Plus自带的分页功能的话需要在mapper对象中传入一个Page对象才可以实现分页,这样耦合度是不是太高了一点,从web到service到mapper,这个Page对象一直都在传入,这样的使用让人感觉有点麻烦~
Mybatis Plus整合PageHelper分页
Mybatis Plus整合PageHelper分页
参考URL: https://blog.csdn.net/m0_37701381/article/details/100719280
SpringBoot2.1+MybatisPlus+Pagehelper框架整合(其中与Dubbo整合时分页失效的疑问与解决)
参考UIRL: https://blog.csdn.net/lstcui/article/details/89068918
springboot自定义拦截器获取分页参数
ThreadLocal Pager 分页的一种解决方案
参考URL: https://blog.csdn.net/cmdsmith/article/details/66969728
spring boot下配置mybatis-plus分页插件
springBoot 使用 mybatis-plus 插件 实现分页
需要写一个分页的配置类分页功能才能生效
java
/**
* //Spring boot方式
* @Description: MybatisPlus配置类
*/
@Configuration
public class MyBatisPlusConfig {
/**
* 分页插件
* @return
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
单表分页查询
如果只是单表,那么分页查询就容易的多了。
这里的@ModelAttribute注解可以将前端传过来的current和size字段映射到Page对象中。
java
/**
* @param page 查询一般传入参数为current和size, 例如/listPage?current=1&size=5,
* @return 返回分页数据
*/
@RequestMapping(value = "/page", method = RequestMethod.GET)
public ResponseObj<Page<T>> listPage(@ModelAttribute Page<T> page, @ModelAttribute T model) {
Page<T> pageList = service.selectPage(page, new EntityWrapper<>(model));
for (T eachObj : pageList.getRecords()) {
queryFilter(eachObj);
}
return new ResponseObj<>(pageList, RetCode.SUCCESS);
}
java
@RestController
@RequestMapping("/student")
public class StudentController {
@Autowired
IStudentService studentService;
@RequestMapping(value = "/findAll",method = RequestMethod.POST)
public Object findAll(HttpServletRequest request){
//获取前台发送过来的数据
Integer pageNo = Integer.valueOf(request.getParameter("pageNo"));
Integer pageSize = Integer.valueOf(request.getParameter("pageSize"));
IPage<Student> page = new Page<>(pageNo, pageSize);
QueryWrapper<Student> wrapper = new QueryWrapper<>();
Student student = new Student();
student.setId(1);
wrapper.setEntity(student);
return studentService.page(page,wrapper);
}
}
总结: 整体思路很简单,需要2个参数,一个是 IPage page实例,传入pageNo、pageSize ,一个是QueryWrapper wrapper实例。 使用时把page传入会自动在sql语句后面添加limit。
自定义sql分页查询
有时候查询的数据难免会出现多表连接查询,或者是一些复杂的sql语句,但是这些语句也是需要支持分页查询的。
先定义查询接口,第一个参数要是分页的参数。
步骤一:在mapper文件中,编写对应的分页查询接口。
步骤二:在xml中编写对应的sql语句,小编这里演示的 "${ew.customSqlSegment}",这个是如果你想自定义的sql语句,也想使用wrapper查询条件构造器,则需要在mapper接口中添加参数,以及xml中也要有固定。
PageHelper
PageHelper用于查询语句分页,让分页更简单、代码更优雅。
参考
MyBatis-Plus 分页查询以及自定义sql分页
mybatis-plus分页查询