
本文共 3858 字,大约阅读时间需要 12 分钟。
Spring Boot + MyBatis-Plus 分页与条件查询实践
在现代Web应用开发中,分页功能和条件查询是前端和后端开发人员经常需要处理的核心需求。在Spring Boot项目中,结合MyBatis-Plus框架,可以通过简单的代码实现高效的分页查询和灵活的条件搜索功能。本文将从分页实现到条件查询的全流程详细讲解,帮助开发者快速掌握这些常用功能的使用方法。
分页实现
MyBatis-Plus提供了强大的分页功能,通过简单的Page对象可以轻松实现分页查询。在前端,向后台传递page和limit参数,后台调用MyBatis-Plus的page()方法即可获取分页结果。以下是分页功能的实现步骤:
@ApiOperation(value = "分页讲师列表")@GetMapping("{page}/{limit}")public R pageList( @ApiParam(name = "page", value = "当前页码", required = true) @PathVariable Long page, @ApiParam(name = "limit", value = "每页记录数", required = true) @PathVariable Long limit) { Page
pageParam = new Page<>(page, limit); teacherService.page(pageParam, null); List records = pageParam.getRecords(); long total = pageParam.getTotal(); return R.ok().data("total", total).data("rows", records);} 通过上述代码,可以实现对Teacher实体的分页查询。pageParam对象包含了当前页码和每页记录数,page()方法会自动处理分页逻辑,返回分页后的记录数和总记录数。
条件查询
除了分页功能,MyBatis-Plus还支持通过条件查询对象实现灵活的查询需求。在实际项目中,我们通常需要对数据进行过滤,例如根据教师名称、头衔等条件查询。以下是条件查询的实现步骤:
1、创建查询对象
首先,我们需要创建一个查询对象来封装条件。在项目中,创建一个新的包com.guli.edu.query,并添加TeacherQuery.java文件:
package com.guli.edu.query;@ApiModel(value = "Teacher查询对象", description = "讲师查询对象封装")@Datapublic class TeacherQuery implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "教师名称,模糊查询") private String name; @ApiModelProperty(value = "头衔(1:高级讲师,2:首席讲师)") private Integer level; @ApiModelProperty(value = "查询开始时间", example = "2019-01-01 10:10:10") private String begin; @ApiModelProperty(value = "查询结束时间", example = "2019-12-01 10:10:10") private String end;}
2、Service层实现
接下来,Service层需要实现pageQuery方法。首先,Service接口声明:
package com.guli.edu.service;public interface TeacherService extends IService
{ void pageQuery(Page pageParam, TeacherQuery teacherQuery);} 然后,在Service实现类中添加pageQuery方法:
package com.guli.edu.service.impl;@Servicepublic class TeacherServiceImpl extends ServiceImpl
{ @Override public void pageQuery(Page pageParam, TeacherQuery teacherQuery) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.orderByAsc("sort"); if (teacherQuery == null) { baseMapper.selectPage(pageParam, queryWrapper); return; } String name = teacherQuery.getName(); Integer level = teacherQuery.getLevel(); String begin = teacherQuery.getBegin(); String end = teacherQuery.getEnd(); 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(pageParam, queryWrapper); }} 3、Controller层处理
最后,Controller层需要处理pageQuery请求。添加pageQuery方法:
@ApiOperation(value = "分页讲师列表")@GetMapping("{page}/{limit}")public R pageQuery( @ApiParam(name = "page", value = "当前页码", required = true) @PathVariable Long page, @ApiParam(name = "limit", value = "每页记录数", required = true) @PathVariable Long limit, @ApiParam(name = "teacherQuery", value = "查询对象", required = false) TeacherQuery teacherQuery) { Page
pageParam = new Page<>(page, limit); teacherService.pageQuery(pageParam, teacherQuery); List records = pageParam.getRecords(); long total = pageParam.getTotal(); return R.ok().data("total", total).data("rows", records);} 总结
通过以上步骤,我们可以快速实现Spring Boot项目中分页和条件查询功能。MyBatis-Plus提供的page()方法使得分页实现变得简单,而通过条件查询对象,我们可以对数据进行灵活的筛选。在实际项目中,结合分页和条件查询,可以显著提升数据处理效率。如果你对MyBatis-Plus还有其他问题,欢迎在评论区留言交流。如果你喜欢这篇文章,请不要忘记点赞支持它:)
发表评论
最新留言
关于作者
