使用mybatisplus快速开发springboot项目(一)--初始化-CSDN博客
使用mybatisplus快速开发springboot项目(二)--业务实现_如何用mybatis-plus写业务-CSDN博客
使用mybatisplus快速开发springboot项目(三)--JWT拦截器-CSDN博客
在很多情况下使用mybatisplus进行联表查询比较麻烦,不如直接使用mybatis写原生的SQL语句来的方便。分页查询又是最普遍的查询操作。下面在springboot项目中引入PageHelper实现分页查询。
pom.xml导入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
application.yml配置文件
#pagehelper分页插件配置
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
PageHelperConfiguration.java(配置类)
package com.example.examservice.config;
import com.github.pagehelper.PageHelper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Properties;
@Configuration
public class PageHelperConfiguration {
@Bean
public PageHelper pageHelper() {
PageHelper pageHelper = new PageHelper();
Properties p = new Properties();
p.setProperty("offsetAsPageNum", "true");
p.setProperty("rowBoundsWithCount", "true");
p.setProperty("reasonable", "true");
pageHelper.setProperties(p);
return pageHelper;
}
}
使用PageHelper分页查询(SQL联表)
postsMapper.pagePostsDto(name),相当于写SQL,在SQL里面进行了联表查询,最后返回一个List。这里注意PageHelper.startPage(page,pageSize)必须写在前面,因为它会拦截这个方法内的所有SQL执行分页操作。
public R postsPage(int page, int pageSize, String name){
PageHelper.startPage(page,pageSize);
List<PostsDto> postsDtos = postsMapper.pagePostsDto(name);
PageInfo<PostsDto> pageInfo = new PageInfo<>(postsDtos);
return R.ok().data("page", pageInfo);
}
使用mybatisplus分页查询(单表)
这里只对Posts进行分页操作,如果是单表还是mybatisplus方便
@Override
public R pagePosts(int page, int pageSize, String name) {
// 构造分页构造器
Page pageInfo = new Page(page, pageSize);
// 构造条件构造器
LambdaQueryWrapper<Posts> queryWrapper = new LambdaQueryWrapper();
queryWrapper.eq(Posts::getIsDeleted, 0)
.like(StringUtils.checkValNotNull(name), Posts::getTitle, name);
this.page(pageInfo, queryWrapper);
return R.ok().data("page",pageInfo);
}