Mybatis-Plus多表关联查询的使用
项目的目录结构:
有以下四个包:
1、 controller控制层
2、dao层,接口
3、pojo,shiulilei
4、service服务层
有表结构如下:
部门表:dept
员工表:emp
假设要查询每个员工所属的部门(或位置等信息),就需要将两张表连接起来,使用SQL语句很简单(select * from emp,dept where emp.deptno=dept.deptno),但是在Java程序中怎么写就比较复杂了。
首先配置pom.xml配置文件
1.pojo包中有dept和emp两个实例类
1)dept
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("dept")
public class Dept implements Serializable {private static final long serialVersionUID = 1L;@TableIdprivate Integer deptno;private String dname;private String loc;
}
2)emp
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("emp")
public class Emp implements Serializable {private static final long serialVersionUID = 1L;@TableId("empno")private Integer empno;private String ename;private String job;private Integer mgr;private LocalDateTime hiredate;private BigDecimal sal;private BigDecimal comm;private Integer deptno;private Dept dept;//多表关联需要查询的数据}
在Emp类中多了一个Dept对象,这个对象包含了每个员工对应部门的信息。
2.在Emp的mapper映射文件(.xml)中的mapper之间添加如下代码
<mapper namespace="com.nb.spring_boot.api.dao.IEmpDao"><resultMap id="empMapper" type="com.nb.spring_boot.api.pojo.Emp"><association property="dept" column="deptno" select="com.nb.spring_boot.api.dao.IDeptDao.selectById"/></resultMap><select id="queryEmps" resultMap="empMapper">select * from emp</select>
</mapper>
resultMap里的id属性(empMapper)里面可以随便写一个变量名,可以不叫empMapper,select里的selectById在IDeptDao接口中要有该方法
Dept selectById(Integer deptno);
3.在Dept的mapper映射文件(.xml)中的mapper之间添加如下代码
<select id="selectById" resultType="com.nb.spring_boot.api.pojo.Dept">select * from dept where deptno=#{deptno}
</select>
4.在IDeptDao接口中代码如下
public interface IDeptDao extends BaseMapper<Dept> {Dept selectById(Integer deptno);
}
5.Emp的dao接口中和
public interface IEmpDao extends BaseMapper<Emp> {IPage<Emp> queryEmps(IPage<Emp> page,@Param(Constants.WRAPPER) Wrapper<Emp> wrapper);
}
6.IEmpService接口中
public interface IEmpService extends IService<Emp> {IPage<Emp> queryEmps(IPage<Emp> result, QueryWrapper<Emp> wrapper);
}
7.EmpserviceIml类中
public class EmpServiceImpl extends ServiceImpl<IEmpDao, Emp> implements IEmpService {@AutowiredIEmpDao empDao;//这里报红没事@Overridepublic IPage<Emp> queryEmps(IPage<Emp> result, QueryWrapper<Emp> wrapper) {result = empDao.queryEmps(result, wrapper);return result;}
}
8.接下来就是你自己在controller层写方法
示例:
@RequestMapping("qemps")
IPage<Emp> queryEmps(@RequestParam(defaultValue = "1") int page,@RequestParam(defaultValue = "5") int limit){IPage<Emp> result = new Page<>(page, limit);QueryWrapper<Emp> wrapper = new QueryWrapper<>();wrapper.gt("sal", 1000);//查询条件,工资大于1000,其他的可以研究一下,比如eq,le,likereturn empService.queryEmps(result, wrapper);
}
以上就是多表关联查询了~~~
Mybatis-Plus多表关联查询的使用相关推荐
- MyBatis实现中间表关联查询
MyBatis实现中间表关联查询 通常构建数据多对多模型的关系时,我们需要再建立一张中间表来关联另外两张表. 下面介绍一下,怎么用MyBatis来实现中间表关联查询并封装到实体类对象中. 现在有三张表 ...
- Mybatis的多表关联查询(多对多)
Mybatis的多表关联查询(多对多) 项目目录结构 实现 Role 到 User 多对多 业务要求 用户与角色的关系模型 编写角色实体类 编写 Role 持久层接口 实现的 SQL 语句 编写映射文 ...
- asp多表查询并显示_SpringBoot系列(五):SpringBoot整合Mybatis实现多表关联查询
本文我们将继续分享介绍Spring Boot在整合Mybatis开发企业级应用时其他典型的业务场景,即Mybatis是如何实现多表关联查询时将查询结果集与对象进行映射的,主要的内容包含"一对 ...
- F005MyBatis学习笔记-MyBatis的多表关联查询
一. 概述 1.一对一 举例:身份证号对人,一个身份证好只能对应一个人,一个人也只能对应一个身份证号,这就是一对一: 特例:Mybatis将多对一看做是一对一: 2.多对多 举例:学生对老师,一个老师 ...
- MyBatis之两表关联查询
1. 数据库表 学生表: 教师表: 2. 需求 要求查询所有教师的信息, 包括他的学生信息. 查询结果样式: 3. 代码 实体类 pojo包下: Student.java package com.xx ...
- jpa多表关联查询_Spring Boot 整合mybatis如何自定义 mapper 实现多表关联查询
上一篇文章已经介绍了自定义 mapper 实现自定义的方法,其实实现了通过自定义的mapper就可以做多表关联等复杂查询.但是很多朋友还是反馈说没有实现多表关联查询,所以,今天把文章又重新修改了,增加 ...
- Mybatis高级应用 多表关联查询
>以订单商品数据模型为例子: 存在以下四张表,用户表user,用户订单表orders,订单明细表orderdetail,商品表items.四张表之间的关系如下图所示: 下面给出四张表结构的详细定 ...
- mybatis 多表关联查询_Java修行第041天--MyBatis框架(下)--多表查询
1 解决列名和属性名不一致问题 如果查询时使用 resultType 属性, 表示采用 MyBatis 的Auto-Mapping(自动映射)机制, 即相同的列名和属性名会自动匹配. 因此, 当数据库 ...
- (探讨)MyBatis中的N+1问题,多表关联查询效率高点还是多次单表查询效率高
MySQL多表关联查询效率高点还是多次单表查询效率高,为什么? https://blog.csdn.net/weixin_33869377/article/details/86265527 MyBat ...
- MyBatis多表关联查询
本文将向大家介绍 MyBatis 中的多表关联查询 主要通过两个示例来说明在 MyBatis 中如何实现 一对多,多对一 和 多对多 查询 第一个示例:老师和学生关联 老师和学生是一对多的关系,一 ...
最新文章
- 20162303 2016-2017-2 《程序设计与数据结构》第六周学习总结
- 关于学习Python的一点学习总结(42->继承list)
- 寻找阿姆斯特朗数c语言程序,C程序检查阿姆斯特朗数
- python保存快捷键_超详细的Sublime Text配置python教程
- python目录遍历_python文件操作之目录遍历实例分析
- Spring面向切面编程
- 网页常用动态效果--悬浮广告
- php stmp 授权码问题,PHPmailer 使用网易126发送邮件的问题
- 本地页面存1天的缓存
- 1.10 理解人的表现
- 收藏jquery兼容浏览器的ctrl+enter动作代码
- jmp怎么做合并的箱线图_Python数据可视化:箱线图多种库画法
- SAP QM数据库表清单
- 51单片机开发板介绍
- 爬虫ip代理,打码平台推荐
- 跳石头 解题报告【二分答案】
- [R] R语言删除字符串中的空值““
- CPA十二--我国外币会计报表折算(转载)
- 非视距成像:硬件设备总结
- 微信支付 postman_支付宝微信刷脸支付系统搭建服务商平台怎么做