一、嵌套的resultMap

这 种方法本质上就是上篇博文介绍的方法,只是把教师实体映射从association元素中提取出来,用一个resultMap元素表示。然后 association元素再引用这个resultMap元素。修改上篇博文示例的StudentMapper.xml如下:

select s.id s_id,

s.name s_name,

s.gender s_gender,

s.major s_major,

s.grade s_grade,

t.id t_id,

t.name t_name,

t.gender t_gender,

t.title t_title,

t.research_area t_research_area

from student s left join teacher t

on s.supervisor_id = t.id

where s.id=#{id}

在 这里,为了让select语句更加清晰可读,每个字段都使用了别名。association元素的属性javaType="Teacher"可以不要,不 像上篇博文示例那样,没有此属性即报错。这大概是因为引用的resultMap元素已经指明了映射的类型为“Teacher”。另外,今天偶然发现,把 StudentMapper.xml的encoding属性由“UTF-8”改为“utf8”即可添加中文注释。

运行结果如下:

这种方式的好处是此resultMap元素可在其它地方被重用(可在博文下方附件下载处下载示例源码)。

二、嵌套的select语句

这种方式是使用一条单独的select语句来加载关联的实体(在本例中就是教师实体),然后在association元素中引用此select语句(注:此方法会产生N+1问题,关于这个问题可参考本系列博客中的“MyBatis中的N+1问题”)。修改StudentMapper.xml如下:

select id,name,gender,major,grade,supervisor_id from student where id=#{id}

select id,name,gender,title,research_area

from teacher where id=#{id}

association元素的属性javaType="Teacher"也可以不要,这大概也是因为引用的select语句中已经指明了要用到的resultMap。

执行结果如下(可在博文下方附件下载处下载示例源码):

mysql association_MyBatis association的两种形式——MyBatis学习笔记之四相关推荐

  1. MyBatis association的两种形式——MyBatis学习笔记之四

    一.嵌套的resultMap 这 种方法本质上就是上篇博文介绍的方法,只是把教师实体映射从association元素中提取出来,用一个resultMap元素表示.然后 association元素再引用 ...

  2. MyBatis collection的两种形式——MyBatis学习笔记之九

    与association一样,collection元素也有两种形式,现介绍如下: 一.嵌套的resultMap 实际上以前的示例使用的就是这种方法,今天介绍它的另一种写法.还是以教师映射为例,修改映射 ...

  3. myBatis association的两种形式

    1.嵌套的resultMap 这种方法的本质就是把教师实体映射从association元素中提取出来,用一个resultMap元素表示.然后association元素再引用这个resultMap元素. ...

  4. MyBatis多参数传递之Map方式示例——MyBatis学习笔记之十三

    前面的文章介绍了MyBatis多参数传递的注解.参数默认命名等方式,今天介绍Map的方式.仍然以前面的分页查询教师信息的方法findTeacherByPage为例(示例源代码下载地址:http://d ...

  5. MyBatis多参数传递之混合方式——MyBatis学习笔记之十五

    在本系列文章的<MyBatis多参数传递之Map方式示例>一文中,网友mashiguang提问如下的方法如何传递参数:public List findStudents(Map condit ...

  6. c语言中的普通字符包括什么,【判断题】C语言中的字符常量通常有两种形式:普通字符和转义字符。...

    [判断题]C语言中的字符常量通常有两种形式:普通字符和转义字符. 更多相关问题 ---Can you speak French?---Yes, but only____.A.a littleB.lit ...

  7. SQL 关于apply的两种形式cross apply 和 outer apply

    SQL 关于apply的两种形式cross apply 和 outer apply 阅读目录 SQL 关于apply的两种形式cross apply 和 outer apply Sql学习第四天--S ...

  8. 【算法笔记】莫比乌斯反演(包含定理,两种形式的证明及入门经典模板)

    整理的算法模板合集: ACM模板 目录 一.莫比乌斯反演 二.几个概念和定理 三.两种形式的莫比乌斯反演证明 四.POJ 3904 Sky Code(入门例题) 一.莫比乌斯反演 学习笔记,我是看这个 ...

  9. java语言的多态性及特点_Java中的方法的多态性有两种形式:( )和( )。_学小易找答案...

    [填空题]已知函数 ,则微分 . [填空题]. [单选题]71.用转动小滑板法车圆锥时产生( )误差的原因是小滑板转动角度计算错误. [单选题] [填空题]Java中的方法的多态性有两种形式:( )和 ...

最新文章

  1. system.DateTime ToDateTime(System.String)”,因此该方法无法转换为存储表达式-解决方法...
  2. Python中深浅拷贝的案例教程
  3. 《信息学奥赛一本通》 高精度减法。输入两个正整数,求它们的差。
  4. 【Linux】一步一步学Linux——w命令(97)
  5. python生成器函数(generator),python3学习笔记:生成器generator
  6. Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value
  7. 获取Tekla属性方式
  8. spark sql读取hive底层_SparkSQL读取Hive数据插入Redis
  9. 【软件】RustDesk自己搭建远程控制服务软件 支持控制手机
  10. Linux自学、大数据学习前奏笔记---Linux基础知识,shell命令介绍学习
  11. 【分布式定时任务】定时任务实现几种方式
  12. 2023年东南大学机械工程考研考情与难度、参考书上岸前辈备考经验
  13. surfacepro4黑苹果触屏_surface pro 4 黑苹果 (surface book 1适用)
  14. 一起来看看阿里开源的15个顶级Java项目
  15. leveldb的sstable-ldb解析
  16. ios mac使用mitmproxy抓包
  17. 学习资料(1)-学习网站,Linux,Git,博客
  18. 说下类加载器与类加载?加载的信息放在哪个区域?
  19. Spring MVC框架——Web开发框架
  20. 小程序基础开发(三):授权,获取用户信息,注册,登录,简单封装request请求

热门文章

  1. Java重修之路(十)面向对象之多态详解,Object类,内部类,匿名内部类详解
  2. 人一切的痛苦,本质上都是对自己的无能的愤怒。──王小波
  3. 思考的梯子 | 黄金圈法则What-How-Why(超干货)
  4. wps打开word是绿色的怎么解决?
  5. 原来是这么做的,在抖音解说电影,6个月赚了40w?
  6. 开源社 2023年度理事会成员官宣
  7. 初识-Python-day03
  8. IDEA配置及常用设置
  9. android应用虚拟内存耗尽,GuardMalloc导致虚拟内存耗尽
  10. 02_星仔带你学Java之变量、常量、字面量、数据类型