MyBatis Plus 实现多表分页模糊查询
项目中使用springboot+mybatis-plus来实现。
但是之前处理的时候都是一个功能,比如分页查询,条件查询,模糊查询。
这次将这个几个功能合起来就有点头疼,写下这边博客来记录自己碰到的问题
我们如果要实现多表分页模糊查询,需要按照下面的步骤进行。
配置分页插件
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
请求类和结果返回类
对于多表关联的查询时,还是需要编写 Req类和VO 类和 手动的在Mapper.xml 中编写sql
虽然是可以不用创建这两个类,用Map 的方式接受返回的结果,但这样只会更麻烦
请求类
@Data
public class StuReq {
private String key;
private Integer page;
private Integer limit;
}
结果返回类
@Data
public class StuVo {
private Integer id;
private String username;
private String password;
private String name;
private String phone;
private String idcard;
private Integer sex;
private Integer sno;
private Integer gradeId;
private String gradeName;
private Integer classId;
private String className;
}
mapper.xml
因为要涉及到多表连接,所以我们就不能使用basemapper,要手动编写mapper文件
- 需要注意
resultType和parameterType - 模糊查询的时候,采用
"%"#{key}"%"
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dj.dormitory.mapper.StudentMapper">
<select id="getStuPageList" resultType="com.dj.dormitory.entity.vo.StuVo" parameterType="com.dj.dormitory.entity.req.StuReq">
select tb_student.id,tb_user.user_name username,tb_user.`password`,tb_user.`name`,tb_user.phone
,tb_student.sno,tb_student.idcard,tb_student.grade_id,tb_grade.`name` grade_name,tb_student.sex
,tb_student.class_id,tb_org.`name` class_name
from tb_student
left outer join tb_user on tb_student.user_id = tb_user.id
left outer join tb_grade on tb_student.grade_id=tb_grade.id
left outer join tb_org on tb_student.class_id = tb_org.id
<if test="stuReq.key!=null">
where tb_student.sno like "%"#{stuReq.key}"%" or tb_user.name like "%"#{stuReq.key}"%"
</if>
</select>
</mapper>
Mapper接口
方法名需要和
StudentMapper.xml的id相同引入参数page,为了分页
@Param("stuReq")为了后续xml的识别
public interface StudentMapper extends BaseMapper<Student> {
List<Map> getAllStu();
List<StuVo> getStuPageList(Page page, @Param("stuReq")StuReq stuReq);
}
Service业务接口
public interface StudentService extends IService<Student> {
Map<String,Object> getList(StuReq stuReq);
}
ServiceImpl业务接口实现类
@Override
public Map<String, Object> getList(StuReq stuReq) {
Page<StuVo> page = new Page<>(stuReq.getPage(),stuReq.getLimit());
List<StuVo> list = this.baseMapper.getStuPageList(page,stuReq);
Map<String,Object> map = new HashMap();
map.put("count",page.getTotal());//获得总共的数目
map.put("stus",list);//获得当前页的数据
return map;
}
Controller控制类
- 前端使用了
layui的表格分页,携带limit和page。以及当我们点击搜索按钮进行模糊查询的传入的关键词key。所以采用了post和@RequestBody - 另外一点需要注意,count指示的是查询出的所有数据的条数,而不是当前页的数目,即
list.size()
@PostMapping("/list")
public Result getList(@RequestBody StuReq stuReq){
Map<String, Object> map = studentService.getList(stuReq);
return Result.ok().data("stus",map.get("stus")).data("count",map.get("count"));
}
测试
‘
如果存在不足之处,评论区指正哦。
如果对你有帮助,给我一个点赞或推荐哦!
参考链接:
https://blog.csdn.net/womenyiqilalala/article/details/95073892
https://blog.csdn.net/weixin_40569991/article/details/88724739
MyBatis Plus 实现多表分页模糊查询的更多相关文章
- 表单模糊查询的三种简单方式(springboot-h2-mybatis)
前几天运营提到说后台管理系统有几个地方想要模糊查询.. 想了下是简单的,就是要注意以前方法的被调用情况,进行增量改动,以免牵一发而动全身.整理一波记录下(本次案例是按名字模糊查询学生信息). 三种 ...
- MSSQL 所有表中模糊查询
--搜索指定数据在那个对象中存在.txt(所有表中模糊查询) CREATE PROC sp_ValueSearch @value sql_variant, --要搜索的数据 @precision bi ...
- hibernate -- 分页模糊查询中setParameter 和setParameterList
在分页模糊查询中碰到setParameter 和setParameterList这两个方法 setParameter 以前就只会用setParameter(int arg,String str),我用 ...
- sqlserver 分页模糊查询
积少成多 ---- 仅以此致敬和我一样在慢慢前进的人儿 问题: 在sqlserver 进行模糊查询,出现问题 最初使用“concat”,进行拼串操作,如下所示: <select id = ...
- Bootstrap-table学习笔记(二)——前后端分页模糊查询
在使用过程中,一边看文档一边做,遇到了一些困难的地方,在此记录一下,顺便做个总结: 1,前端分页 2,后端分页 3,模糊查询 前端分页相当简单,在我添加了2w条测试数据的时候打开的很流畅,没有卡顿. ...
- hibernate分页模糊查询
在web项目中,显示数据一般采用分页显示的,在分页的同时,用户可能还有搜索的需求,也就是模糊查询,所以,我们要在dao写一个可以分页并且可以动态加条件查询的方法.分页比较简单,采用hibernate提 ...
- EF一对多的表,模糊查询2个表的数据!
如用户表和电话表,要求搜索时可以模糊查询姓名和号码.都可以找到包含该字符的所有用户. /// <summary> /// 模糊查询姓名和电话号码,并按姓名排序返回 /// </sum ...
- 阶段3 1.Mybatis_05.使用Mybatis完成CRUD_4 Mybatis的CRUD-查询一个和模糊查询
模糊查询 测试的时候需要提供百分号的模糊查询.传入的参数提供百分号 所有包含王字的就都查询出来了.
- Mybatis框架学习总结-表的关联查询
一对一关联 创建表和数据:创建一张教师表和班级表,这里假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. CREATE TABLE teacher( t_id INT PRIM ...
随机推荐
- 性能追击:万字长文30+图揭秘8大主流服务器程序线程模型 | Node.js,Apache,Nginx,Netty,Redis,Tomcat,MySQL,Zuul
本文为<高性能网络编程游记>的第六篇"性能追击:万字长文30+图揭秘8大主流服务器程序线程模型". 最近拍的照片比较少,不知道配什么图好,于是自己画了一个,凑合着用,让 ...
- FreeBSD 日常应用
freebsd日常应用 办公libreoffice或者apache openoffice 设计 图像编辑:gimp 矢量图设计:lnkscape 视频剪辑:openshot 视频特效:natron 编 ...
- 如何学习python爬虫
分享网易云课堂上一个不错的视频教学:http://study.163.com/course/courseMain.htm?courseId=1003285002
- 高仿京东到家APP引导页炫酷动画效果
前言 京东到家APP的引导页做的可圈可点,插画+动效,简明生动地说明了APP最吸引用户的几个亮点(商品多,价格低,配送快...).本文主要分析拆解这些动画效果,并完成一个高仿Demo,完整的Demo代 ...
- springboot+druid报错log4j:WARN No appenders could be found for logger (druid.sql.Connection). log4j:WARN Please initialize the log4j system properly.
解决方案:新建文件log4j.properties log4j.rootLogger=DEBUG, stdout log4j.appender.stdout=org.apache.log4j.Con ...
- Nginx错误日志(error_log)配置及信息详解
Nginx错误日志信息介绍 Nginx的错误信息是调试Nginx服务的重要手段,属于核心功能模块(ngx_core_module)的参数,该参数的名字为error_log,可以放在Main区块中全局配 ...
- ASP.NET Core中使用令牌桶限流
在限流时一般会限制每秒或每分钟的请求数,简单点一般会采用计数器算法,这种算法实现相对简单,也很高效,但是无法应对瞬时的突发流量. 比如限流每秒100次请求,绝大多数的时间里都不会超过这个数,但是偶尔某 ...
- 2021年春软件工程"助教团队"成员介绍
2021年春软件工程 助教团队 成员介绍 项目 内容 这个作业属于那个课程 2021春季学期软件工程(罗杰.任健) 这个作业的要求在哪里 团队介绍 姓名 照片 个人介绍 分工 刘Q 本团队的PM,和助 ...
- Leedcode算法专题训练(栈和队列)
1. 用栈实现队列 232. Implement Queue using Stacks (Easy) Leetcode / 力扣 class MyQueue { Stack<Integer> ...
- 防火墙双出口环境下私网用户通过NAPT访问Internet
组网图形 组网需求 如图1所示,某企业在网络边界处部署了FW作为安全网关,并分别从运营商ISP1和ISP2处购买了宽带上网服务,实现内部网络接入Internet的需求. 具体需求如下: 研发部门和市场 ...