Mybatis-学习笔记(4)1对1、1对多、多对多
1、1对1
有2种方式对内嵌Bean设值:
1》关联查询就一条语句。使用association关键字,直接将嵌套对象的映射表的字段赋值内嵌对象。
<association property="teacher" javaType="com.lfy.bean.Teacher"><id property="id" column="t_id"/><result property="name" column="t_name"/> </association>
2》在同一个mapper中写嵌套bean的映射查询,或者嵌套bean的查询在独立的mapper中。还是使用association关键字。
<!-- getTeacher为同mapper的一个查询。对内嵌teacher属性进行关联查询 --><resultMap type="com.lfy.bean.Classes" id="ClassesResultMap2"><id property="id" column="c_id"/><result property="name" column="c_name"/><association property="teacher" column="teacher_id" select="getTeacher" javaType="com.lfy.bean.Teacher"/> </resultMap>
<!-- getTeacher为其他mapper的一个查询。对内嵌teacher属性进行关联查询 --> <resultMap type="com.lfy.bean.Classes" id="ClassesResultMap2"><id property="id" column="c_id"/><result property="name" column="c_name"/><association property="teacher" column="teacher_id" select="com.lfy.mapper.teacherMapper.getTeacher" javaType="com.lfy.bean.Teacher"/> </resultMap>
总结:关键字association。
2、1对多
外键一般放置在多方,如学生与班级的关系,多个学生对应一个班级,是多对一的关系,外键应该放在学生表中,即学生表参照了班级表。
但我们现在的需求是,查询出某班级,并查询出班级的所有学生,班级与学生的关系是一对多的关系。
<!-- 根据id查询班级信息,返回resultMap --><select id="selectClazzById" parameterType="int" resultMap="clazzResultMap">SELECT * FROM tb_clazz WHERE id = #{id}</select><!-- 映射Clazz对象的resultMap --><resultMap type="com.lfy.bean.Clazz" id="clazzResultMap"><id property="id" column="id"/><result property="code" column="code"/><result property="name" column="name"/><!-- 一对多关联映射:collection fetchType="lazy"表示懒加载 --><collection property="students" javaType="ArrayList"column="id" ofType="com.lfy.bean.Student"select="com.lfy.mapping.StudentMapper.selectStudentByClazzId"fetchType="lazy"><id property="id" column="id"/><result property="name" column="name"/><result property="sex" column="sex"/><result property="age" column="age"/></collection></resultMap>
fetchType属性:有两个取值eager和lazy,eager表示立即加载,是默认的加载形式。在查询Clazz对象的时候,会立即执行关联的selectStudentByClazzId中定义的SQL语句去查询班级的所有学生;lazy表示懒加载,其不会立即发送SQL语句去查询班级的所有学生,而是等到需要使用到班级的students属性时,才会发送SQL语句去查询班级的所有学生信息。
fetch机制更多的是为了性能考虑,如果查询班级时确定会访问班级的所有学生,则该属性应该设置为eager;如果查询班级时只是查询班级信息,有可能不会访问班级的所有学生,则该属性应该设置为lazy。一般情况下,一对多所关联的集合对象,都应该被设置成lazy。
使用懒加载,还需要在Mybatis配置文件中增加如下配置:
总结:关键字collection。
3、多对多
数据库中的多对多关系,推荐使用中间表来维护关系,中间表中的订单id作为外键参照订单表的id,商品id作为外键参照商品表的id。
主要是对前面两种的总和应用。
转载于:https://www.cnblogs.com/ZeroMZ/p/11415836.html
Mybatis-学习笔记(4)1对1、1对多、多对多相关推荐
- mybatis学习笔记(13)-延迟加载
2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(13)-延迟加载 标签: mybatis [TOC] resultMap可以实现高级映射(使用asso ...
- mybatis学习笔记(7)-输出映射
2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(7)-输出映射 标签: mybatis [TOC] 本文主要讲解mybatis的输出映射. 输出映射有 ...
- mybatis学习笔记(3)-入门程序一
2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(3)-入门程序一 标签: mybatis [TOC] 工程结构 在IDEA中新建了一个普通的java项 ...
- MyBatis多参数传递之Map方式示例——MyBatis学习笔记之十三
前面的文章介绍了MyBatis多参数传递的注解.参数默认命名等方式,今天介绍Map的方式.仍然以前面的分页查询教师信息的方法findTeacherByPage为例(示例源代码下载地址:http://d ...
- ant的下载与安装——mybatis学习笔记之预备篇(一)
看到这个标题是不是觉得有点奇怪呢--不是说mybatis学习笔记吗,怎么扯到ant了?先别急,请容我慢慢道来. mybatis是另外一个优秀的ORM框架.考虑到以后可能会用到它,遂决定提前学习,以备不 ...
- mybatis学习笔记--常见的错误
原文来自:<mybatis学习笔记--常见的错误> 昨天刚学了下mybatis,用的是3.2.2的版本,在使用过程中遇到了些小问题,现总结如下,会不断更新. 1.没有在configurat ...
- mybatis学习笔记(1)-对原生jdbc程序中的问题总结
2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(1)-对原生jdbc程序中的问题总结 标签:mybatis [TOC] 本文总结jdbc编程的一般步骤 ...
- MyBatis:学习笔记(4)——动态SQL
MyBatis:学习笔记(4)--动态SQL 转载于:https://www.cnblogs.com/MrSaver/p/7453949.html
- Mybatis学习笔记(二) 之实现数据库的增删改查
开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包.这些软件工具均可以到各自的官方网站上下载 ...
- MyBatis多参数传递之混合方式——MyBatis学习笔记之十五
在本系列文章的<MyBatis多参数传递之Map方式示例>一文中,网友mashiguang提问如下的方法如何传递参数:public List findStudents(Map condit ...
最新文章
- Welcome Party
- 简述原型模型的特点_3D打印硅胶复模手板的步骤和特点有哪些
- asp.net php 哪个好,ASP.NET、JSP和PHP究竟哪个好
- .Net 4.0并行库实用性演练[1]
- 像git一样管理数据,高效的数据管理平台TensorBay来了!
- python使用sphinx自动生成文档
- 使用Homebrew安装Git与Github在idea中的配置
- Python+Appium+夜神模拟器安装与简单运行(1/2)
- 图片相似度识别在线_图片相似度计算的几种方法
- 计算机绘图说课视频,电气工程制图说课ppt课件
- R语言--Cox模型校准曲线原理(一)数据来源
- 信号发生器的基本知识
- PDF编辑器:Adobe Acrobat XI Pro
- 计算机(了解)\注释\变量\数据类型\格式化输出\debug
- 中国最缺大学的重点城市
- K近邻算法(k-nearest neighbor,KNN)
- 净值继续回落,短期弱势难改
- 关于IBM笔记本快捷键使用一览表
- 光脚丫思考Vue3与实战:第05章 计算属性和侦听器 第01节 计算属性
- PCL点云边界特征检测 (附完整代码 C++)