项目的目录结构:

有以下四个包:

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多表关联查询的使用相关推荐

  1. MyBatis实现中间表关联查询

    MyBatis实现中间表关联查询 通常构建数据多对多模型的关系时,我们需要再建立一张中间表来关联另外两张表. 下面介绍一下,怎么用MyBatis来实现中间表关联查询并封装到实体类对象中. 现在有三张表 ...

  2. Mybatis的多表关联查询(多对多)

    Mybatis的多表关联查询(多对多) 项目目录结构 实现 Role 到 User 多对多 业务要求 用户与角色的关系模型 编写角色实体类 编写 Role 持久层接口 实现的 SQL 语句 编写映射文 ...

  3. asp多表查询并显示_SpringBoot系列(五):SpringBoot整合Mybatis实现多表关联查询

    本文我们将继续分享介绍Spring Boot在整合Mybatis开发企业级应用时其他典型的业务场景,即Mybatis是如何实现多表关联查询时将查询结果集与对象进行映射的,主要的内容包含"一对 ...

  4. F005MyBatis学习笔记-MyBatis的多表关联查询

    一. 概述 1.一对一 举例:身份证号对人,一个身份证好只能对应一个人,一个人也只能对应一个身份证号,这就是一对一: 特例:Mybatis将多对一看做是一对一: 2.多对多 举例:学生对老师,一个老师 ...

  5. MyBatis之两表关联查询

    1. 数据库表 学生表: 教师表: 2. 需求 要求查询所有教师的信息, 包括他的学生信息. 查询结果样式: 3. 代码 实体类 pojo包下: Student.java package com.xx ...

  6. jpa多表关联查询_Spring Boot 整合mybatis如何自定义 mapper 实现多表关联查询

    上一篇文章已经介绍了自定义 mapper 实现自定义的方法,其实实现了通过自定义的mapper就可以做多表关联等复杂查询.但是很多朋友还是反馈说没有实现多表关联查询,所以,今天把文章又重新修改了,增加 ...

  7. Mybatis高级应用 多表关联查询

    >以订单商品数据模型为例子: 存在以下四张表,用户表user,用户订单表orders,订单明细表orderdetail,商品表items.四张表之间的关系如下图所示: 下面给出四张表结构的详细定 ...

  8. mybatis 多表关联查询_Java修行第041天--MyBatis框架(下)--多表查询

    1 解决列名和属性名不一致问题 如果查询时使用 resultType 属性, 表示采用 MyBatis 的Auto-Mapping(自动映射)机制, 即相同的列名和属性名会自动匹配. 因此, 当数据库 ...

  9. (探讨)MyBatis中的N+1问题,多表关联查询效率高点还是多次单表查询效率高

    MySQL多表关联查询效率高点还是多次单表查询效率高,为什么? https://blog.csdn.net/weixin_33869377/article/details/86265527 MyBat ...

  10. MyBatis多表关联查询

    本文将向大家介绍 MyBatis 中的多表关联查询 主要通过两个示例来说明在 MyBatis 中如何实现 一对多,多对一 和 多对多 查询 第一个示例:老师和学生关联 ​ 老师和学生是一对多的关系,一 ...

最新文章

  1. 20162303 2016-2017-2 《程序设计与数据结构》第六周学习总结
  2. 关于学习Python的一点学习总结(42->继承list)
  3. 寻找阿姆斯特朗数c语言程序,C程序检查阿姆斯特朗数
  4. python保存快捷键_超详细的Sublime Text配置python教程
  5. python目录遍历_python文件操作之目录遍历实例分析
  6. Spring面向切面编程
  7. 网页常用动态效果--悬浮广告
  8. php stmp 授权码问题,PHPmailer 使用网易126发送邮件的问题
  9. 本地页面存1天的缓存
  10. 1.10 理解人的表现
  11. 收藏jquery兼容浏览器的ctrl+enter动作代码
  12. jmp怎么做合并的箱线图_Python数据可视化:箱线图多种库画法
  13. SAP QM数据库表清单
  14. 51单片机开发板介绍
  15. 爬虫ip代理,打码平台推荐
  16. 跳石头 解题报告【二分答案】
  17. [R] R语言删除字符串中的空值““
  18. CPA十二--我国外币会计报表折算(转载)
  19. 非视距成像:硬件设备总结
  20. 微信支付 postman_支付宝微信刷脸支付系统搭建服务商平台怎么做

热门文章

  1. 各类Java高质量学习网址
  2. 事实表与维度表的区别与关系
  3. 搜索引擎技术 ——链接分析
  4. zoj 2334 Monkey King
  5. 3GPP 首个5G标准
  6. Daily record-December
  7. 洛谷 P1719 最大加权矩形
  8. HDU - 1846 巴士博弈
  9. DSO Framer ActiveX 控件
  10. MySQL 求平均数