Mybatis-plus分页查询和条件查询通用写法

﹏ヽ暗。殇╰゛Y 2021-07-25 01:53 704阅读 0赞

一 查询条件VO

  1. /**
  2. * @className: TeacherQueryVo
  3. * @description: 讲师查询条件封装
  4. * @date: 2020/11/18
  5. * @author: cakin
  6. */
  7. @ApiModel("Teacher查询对象")
  8. @Data
  9. public class TeacherQueryVo implements Serializable {
  10. private static final long serialVersionUID = 1L;
  11. @ApiModelProperty(value = "讲师姓名")
  12. private String name;
  13. @ApiModelProperty(value = "讲师级别")
  14. private Integer level;
  15. @ApiModelProperty(value = "开始时间")
  16. private String joinDateBegin;
  17. @ApiModelProperty(value = "结束时间")
  18. private String joinDateEnd;
  19. }

二 讲师控制器中的分页和条件查询

  1. /**
  2. * 功能描述:分页和条件查询
  3. *
  4. * @param page 当前页码
  5. * @param limit 每页记录数
  6. * @param teacherQueryVo 查询条件封装
  7. * @return R 返回给前端的数据
  8. * @author cakin
  9. * @date 2020/11/18
  10. */
  11. @ApiOperation("讲师分页列表")
  12. @GetMapping("list/{page}/{limit}")
  13. public R listPage(@ApiParam(value = "当前页码", required = true) @PathVariable Long page,
  14. @ApiParam(value = "每页记录数", required = true) @PathVariable Long limit,
  15. @ApiParam("讲师列表查询对象") TeacherQueryVo teacherQueryVo) {
  16. // 分页参数
  17. Page<Teacher> pageParam = new Page<>(page, limit);
  18. IPage<Teacher> pageModel = teacherService.selectPage(pageParam, teacherQueryVo);
  19. List<Teacher> records = pageModel.getRecords();
  20. long total = pageModel.getTotal();
  21. return R.ok().data("total", total).data("rows", records);
  22. }

三 讲师服务层实现

  1. /**
  2. * @className: TeacherServiceImpl
  3. * @description: 讲师 服务实现类
  4. * @date: 2020/11/18
  5. * @author: cakin
  6. */
  7. @Service
  8. public class TeacherServiceImpl extends ServiceImpl<TeacherMapper, Teacher> implements TeacherService {
  9. /**
  10. * 功能描述:显示分页查询列表
  11. *
  12. * @author cakin
  13. * @date 2020/11/18
  14. * @param pageParam 分页查询参数
  15. * @param teacherQueryVo 条件查询参数
  16. * @return IPage<Teacher> 分页信息
  17. */
  18. @Override
  19. public IPage<Teacher> selectPage(Page<Teacher> pageParam, TeacherQueryVo teacherQueryVo) {
  20. // 1 排序:按照sort字段排序
  21. QueryWrapper<Teacher> queryWrapper = new QueryWrapper<>();
  22. queryWrapper.orderByAsc("sort");
  23. // 2 有分页查询 无条件查询
  24. if (teacherQueryVo == null) {
  25. return baseMapper.selectPage(pageParam, queryWrapper);
  26. }
  27. // 3 构造条件查询
  28. String name = teacherQueryVo.getName();
  29. Integer level = teacherQueryVo.getLevel();
  30. String joinDateBegin = teacherQueryVo.getJoinDateBegin();
  31. String joinDateEnd = teacherQueryVo.getJoinDateEnd();
  32. if (!StringUtils.isEmpty(name)) {
  33. queryWrapper.likeRight("name", name);
  34. }
  35. if (level != null) {
  36. queryWrapper.eq("level", level);
  37. }
  38. if (!StringUtils.isEmpty(joinDateBegin)) {
  39. queryWrapper.ge("join_date", joinDateBegin);
  40. }
  41. if (!StringUtils.isEmpty(joinDateEnd)) {
  42. queryWrapper.le("join_date", joinDateEnd);
  43. }
  44. // 2 有分页查询 有条件查询
  45. return baseMapper.selectPage(pageParam, queryWrapper);
  46. }

四 Swagger测试

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW5ncWl1bWluZw_size_16_color_FFFFFF_t_70

查询结果

  1. {
  2. "success": true,
  3. "code": 20000,
  4. "message": "成功",
  5. "data": {
  6. "total": 2,
  7. "rows": [{
  8. "id": "2",
  9. "gmtCreate": "2018-03-30 18:28:26",
  10. "gmtModified": "2020-04-14 17:40:36",
  11. "name": "周润发",
  12. "intro": "中国人民大学附属中学数学一级教师",
  13. "career": "中国科学院数学与系统科学研究院应用数学专业博士,研究方向为数字图像处理,中国工业与应用数学学会会员。参与全国教育科学“十五”规划重点课题“信息化进程中的教育技术发展研究”的子课题“基与课程改革的资源开发与应用”,以及全国“十五”科研规划全国重点项目“掌上型信息技术产品在教学中的运用和开发研究”的子课题“用技术学数学”。",
  14. "level": 2,
  15. "avatar": "https://guli-file-helen.oss-cn-beijing.aliyuncs.com/avatar/2020/04/14/f606ed5b-1d46-43a1-945c-3e1b3b58fc0a.jpg",
  16. "sort": 1,
  17. "joinDate": "2019-10-28",
  18. "deleted": false
  19. },
  20. {
  21. "id": "4",
  22. "gmtCreate": "2018-04-03 14:13:51",
  23. "gmtModified": "2019-10-29 19:52:46",
  24. "name": "周杰伦",
  25. "intro": "长期从事考研政治课讲授和考研命题趋势与应试对策研究。考研辅导新锐派的代表。",
  26. "career": "政治学博士、管理学博士后,北京师范大学马克思主义学院副教授。多年来总结出了一套行之有效的应试技巧与答题方法,针对性和实用性极强,能帮助考生在轻松中应考,在激励的竞争中取得高分,脱颖而出。",
  27. "level": 1,
  28. "avatar": "https://online-teach-file-helen.oss-cn-beijing.aliyuncs.com/avatar/2019/11/25/fee1e99f-8852-4da0-a256-9732e55bb608.jpg",
  29. "sort": 1,
  30. "joinDate": "2019-10-27",
  31. "deleted": false
  32. }
  33. ]
  34. }
  35. }

发表评论

表情:
评论列表 (有 0 条评论,704人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JSP通用组件,带查询条件

    —— 如果一段代码重复出现的次数多了,我们就需要把它独立出来! 分页功能的代码就是这样的,在需要展示列表的页面,我们基本都需要加上分页功能,如果某天boss想要修改分页功能的