简单分页查询
- 使用的是mybatis-plus的分页插件
- 创建配置类,引入分页插件,分页插件代码例下
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
- controller中使用
- get方式访问,需在访问路径加入page变量(页数),与limit变量(记录条数)。
- 方法参数中也同样需加入这两个变量
- 创建page对象
- 调用page方法,进行分页查询。此page方法即mp的baseMapper中的selectPage方法。
- page方法两个参数,一个为此前创建的page对象,一个为条件查询的参数,可置为null。
- 从page对象中获取total与record数据
- 返回数据。代码如下
@GetMapping("pageList/{page}/{limit}")
public R getPageTeacherList(@PathVariable Long page,
@PathVariable Long limit){
Page<EduTeacher> pageTeacher = new Page<>(page, limit);
eduTeacherService.page(pageTeacher, null);
long total = pageTeacher.getTotal();
List<EduTeacher> records = pageTeacher.getRecords();
return R.ok().data("total",total).data("items",records);
}
- return的代码采用统一返回数据格式与链式编程,可看之前的博客
return R.ok().data("total",total).data("items",records);
多条件组合查询带分页
- 因为需要多条件查询,所以可创建一个实体类,专门用于封装查询数据
@Data
public class QueryTeacher {
private String name;
private String level;
private String beginTime;
private String endTime;
}
- controller的方法除了之前的两个参数,也要加上刚创建的实体类。实体类加上@RequestBody(required = false)注解,即参数需为json格式且一些数据可以不要
- 创建page对象
- 掉用service的方法实现条件查询,并分页
- service中创建条件查询的方法,参数为page对象与封装查询数据的QueryTeacher对象
- 判断queryTeacher是否有数据,没有数据即为无条件查询分页,直接查询分页并return
- queryTeacher不为空,则将queryTeacher的数据取出来
- 创建QueryWrapper对象
- 判断是否有条件值,有则拼接查询条件
- 使用baseMapper.selectPage()条件查询并分页,两个参数,一个为page对象,一个为查询条件QueryWrapper
- service代码如下
@Service
public class EduTeacherServiceImpl extends ServiceImpl<EduTeacherMapper, EduTeacher> implements EduTeacherService {
@Override
public void pageListCondition(Page<EduTeacher> pageTeacher, QueryTeacher queryTeacher) {
if (queryTeacher == null) {
baseMapper.selectPage(pageTeacher, null);
return;
}
String name=queryTeacher.getName();
String level=queryTeacher.getLevel();
String begin=queryTeacher.getBeginTime();
String end=queryTeacher.getEndTime();
QueryWrapper<EduTeacher> QueryWrapper = new QueryWrapper<>();
if (!StringUtils.isEmpty(name)){
QueryWrapper.like("name",name);
}
if (!StringUtils.isEmpty(level)){
QueryWrapper.eq("level",level);
}
if (!StringUtils.isEmpty(begin)){
QueryWrapper.ge("gmt_create",begin);
}
if (!StringUtils.isEmpty(end)){
QueryWrapper.le("gmt_create",end);
}
baseMapper.selectPage(pageTeacher,QueryWrapper);
}
}
- controller中从page对象中获取数据,并返回。controller代码如下
@PostMapping("moreConditionPageList/{page}/{limit}")
public R moreConditionPageList(@PathVariable Long page,
@PathVariable Long limit,
@RequestBody(required = false) QueryTeacher queryTeacher){
Page<EduTeacher> pageTeacher = new Page<>(page, limit);
eduTeacherService.pageListCondition(pageTeacher,queryTeacher);
long total = pageTeacher.getTotal();
List<EduTeacher> records = pageTeacher.getRecords();
return R.ok().data("total",total).data("items",records);
}