最近面试遇上一个问题就是问我MyBatis怎么级联查询 例如查询老师的时候把他的学生也查询出来 没回答上,回来自己看了看资料 找到方法了 记录下

我这里实现的是查询用户的时候把他的详情(一对一)和他的拥有的设备(一对多)一起查询出来 没有使用实体类,实体类类似

首先定义一个用户的返回集重点在后面两个属性的配置,注解已经标注了这里不多作说明

<!-- 定义用户返回集 --><resultMap type="map" id="userResult"><result property="id" column="id" /><result property="name" column="name" /><!-- one to one 一个用户对应一个详情 --><association property="userDetail" column="id" javaType="map" select="getUserDetail" /><!-- one to many 一个用户对应多个设备 --><collection property="deviceList" column="id" javaType="list" select="getUserDevice" /></resultMap>

这里是用户详情和用户设备的返回集 很普通

 <!-- 用户详情返回集 --><resultMap type="map" id="userDetailResult"><result property="id" column="id" /><result property="name" column="name" /><result property="birthday" column="birthday" /><result property="age" column="age" /><result property="homeAddress" column="homeAddress" /><result property="IDCard" column="IDCard" /></resultMap><!-- 用户设备返回集 --><resultMap type="map" id="deviceResult"><result property="id" column="id" /><result property="name" column="name" /><result property="sn" column="sn" /></resultMap>

这里是几个查询的配置

 <!-- 查询单个用户 --><select id="queryOne" parameterType="map" resultMap="userResult">SELECT id,name,registrationID FROM SYS_USER WHERE name=#{name} AND password=#{password}</select><!-- 查询用户详情 --><select id="getUserDetail" parameterType="map" resultMap="userDetailResult">SELECT id,name,birthday,age,homeAddress,IDCard FROM SYS_USER_DETAIL WHERE userID=#{id}</select><!-- 查询用户设备 --><select id="getUserDevice" parameterType="map" resultMap="deviceResult">SELECT id,name,sn FROM ACS_DEVICE WHERE adminID=#{id}</select>

然后我说一下第一个配置和其他的关系
association:一对一的标签 
property:属性名称
column:外键列
javaType:类型(可以是自己的实体类)
select:关联的查询语句
collection:一对多的标签
property:属性名称
column:外键列
javaType:类型(可以是自己的实体类)
select:关联的查询语句

附上一个查询出来的结果,希望对大家有所帮助

        {"id":1,"registrationID":"011ca8068e2","name":"admin","userDetail":{"id":1,"birthday":"2015-06-09","homeAddress":"重庆市","age":0,"name":"管理员","IDCard":"500231199009010058"},"deviceList":[{"id":1,"sn":"2059A0FD4DED","name":"test"},{"id":3,"sn":"2059A0FD4E0B","name":"剧组"},{"id":4,"sn":"2059A0FD4DE","name":"xy"}]}

MyBatis 的级联查询相关推荐

  1. MyBatis实现级联查询及逆向生成

    MyBatis实现级联查询及逆向生成 一,级联查询 1.级联查询 N-1 ​ 以多的一方为主表 接口 //级联查询 N-1List<Emp> selectEmp(Map map); 映射文 ...

  2. mybatis 一对一 一对多 级联查询

    大家好,我是烤鸭: 今天分享一下关于mybatis的级联查询. 环境: mybatis   3.2.8 spring      4.1.9 1.   业务场景 在一个人申请某些账号或者权限的时候,比如 ...

  3. mybatis一对多关联 创建_MyBatis多对多关联查询(级联查询)

    其实,MyBatis 没有实现多对多级联,这是因为多对多级联可以通过两个一对多级联进行替换. 例如,一个订单可以有多种商品,一种商品可以对应多个订单,订单与商品就是多对多的级联关系,使用一个中间表(订 ...

  4. mybatis级联查询list_MyBatis手把手跟我做系列(四) ---级联查询与懒加载

    涉及到数据库的级联查询,那肯定就要提到一对一,一对多,多对多这样的表关系,以及java程序与之对应的类和类之间的表现形式,我这里主要通过一对多的表关系给大家介绍以下MyBatis里面对于级联关系的处理 ...

  5. MyBatis级联查询

    文章目录 MyBatis级联查询 简介 一对一 创建数据库初始数据 创建实体类 创建Mapper类及XML 提供两次方式xml进行查询,代码均在StudentMapper .xml 分步查询 单步查询 ...

  6. mybatis 级联查询

    有时候我们的POJO对象经常不是一个简单的对象,往往存在着一对一或者一对多的关系.就如一个学生可以有一个班主任,有多门课程一样: public class StudentCourse {private ...

  7. layui表格显示后台的多表的级联查询(多对多,多对一)带mybatis级联查询源码,已解决

    在ssm和springboot项目中我们存在表与表之间一对多和多对多的情况,那么他们就要进行级联查询查询出相关联的数据,级联查询涉及到的问题就是在一个实体类中存在另一个实体类的对象(一对一)或者对象集 ...

  8. 级联查询Mybatis

    本篇主要内容如下: 简单一对一级联查询 嵌套结果与嵌套查询 一对多单向 缓存(了解) 延迟加载(了解) 鉴别器(自学) 调用存储过程 分页拦截 多形参问题 简单一对一级联查询 在实际项目中,经常是关联 ...

  9. mybatis 级联查询兑现_MyBatis之自查询使用递归实现 N级联动效果(两种实现方式)...

    A:首先先看下一个简单的面试题 斐波那契数列 计算数组{1,1,2,3,5,8.......} 第30位值 规律:1 1 从第三项开始,每一项都是前两项之和 有两种实现方式 第一种方式: public ...

最新文章

  1. 快手日入数据量超 5120TB,数据管治如何做?
  2. openssl 创建私有CA
  3. 深入grootJs(进阶教程)
  4. Django RestFramework BaseSerializer
  5. java中try 与catch的使用
  6. IE6.0、IE7.0 、FireFox 在样式中的不同写法.doc
  7. Experimental-work1
  8. keepalived实现应用高可用
  9. linux系统下c语言程序需要改动的地方,如何在Linux系统环境下进行C语言开发
  10. php调用mysql中文变量_用php调用MySQL里的数据,为什么汉字都变成了问号?在线等...
  11. 剑指offer之字符流中第一个不重复的字符
  12. 造兵三国的服务器要维护多久,FAQ_造兵三国_九游手机游戏
  13. 【机器学习算法】聚类算法-4 模糊聚类 密度聚类,如何判断超参数:数据群数
  14. Matplotlib:初学者绕不开的库,详解50种常用可视化图表!
  15. 二十五、PHP内核探索:常量的实现 ☞ 脱离C语言和数学讨论底层都是耍流氓
  16. 通过京东白条了解资产证券化
  17. Mac解决docker kubernetes一直starting
  18. 扫码点餐小程序源码_做个扫码点餐的小程序贵吗?
  19. ThreadPoolExecutor(五)——线程池关闭相关操作
  20. 概率论与数理统计 | (3) 随机变量

热门文章

  1. python求解不等式组可行域_二元一次不等式(组)和可行域
  2. ipv6 dns修改方法
  3. 如何利用Simulink来设计一个AEB的算法,并通过SCANeR仿真来测试?
  4. 网页/博客Hexo添加live2d游戏角色看板娘,简易添加,碧蓝航线等live2d新型游戏角色模型(moc3)
  5. java鬼吹灯搬山法杖_倒斗四大门派卸岭、搬山、摸金、发丘,《鬼吹灯》为何不讲发丘...
  6. android 语音和输入法按钮切换,android 切换系统语言,输入法也随之切换
  7. CIS crosstalk简介
  8. 中国最火最流行的40个博客网站
  9. qq邮箱imtp收件服务器,qq邮箱代收outlook
  10. 四川大学计算机专业调剂,四川大学计算机学院(软件学院)研究生调剂