七、MyBatis教程之四多表关系的实现
在MyBatis中,多表关系没有像Hibernate中体现的那么明显,关系型数据库表与表之间的关系主要有:
1、一对一关系
账户表-----账户详情表
2、多对一关系
学生和班级
3、一对多关系
班级和学生
4、多对多关系
学生和课程
而在myBatis中只需记得2个标签即可实现多表关系:
1、association标记一对一或多对一
association其实就是标记当前的属性是一个对象,一般可用于一对一或多对一
<!—实现两张表的一对一关系查询映射 --> <select id=”query” resultMap=”ws2”> select w.*,h.id husid,h.name hname,h,age hage from tb_wife w left join tb_husband h on w.hid=h.id </select> <resultMap type=”Wife” id=”ws2”> <id property=”id” column=”id”/> <result property=”name” column=”name”/> <result property=”hobby” column=”hobby”/> <!—嵌套对象,通过联结查询获取结果 --> <association property=”husband” javaType=”Husband”> <id property=”id” column=”husid”/> <result property=”name” column=”hname”/> <result property=”age” column=”hage”/> </association> </resultMap>
association标记一对一或多对一
一对一可以,多对一一样,其中javaType标记的属性的数据类型,不可省略。
2、collection实现一对多或多对多
该标签标记当前属性是一个集合,内容通过SQL查询而来。
下面配置体现一对多的关系实现:
<select id=”query1” resultMap=”myhs2”>select h.*,c.id cid,c.name cname,c.infant from tb_husband h left join tb_child c on h.id=c.hid </select> <resultMap type=”Husband” id=”myhs2”> <id property=”id” column=”id”/> <result property=”name” column=”name”/> <result property=”age” column=”age”/> <!-- 嵌套集合--> <collection property=”childs” ofType=”Child”><id property=”id” column=”cid”/><result property=”name” column=”cname”/><result property=”infant” column=”infant”/></collection> <resultMap>
collection实现一对多或多对多
其中,ofType:为集合中泛型的数据类型,也就是多的一方对应的类名。
3、collection和association嵌套使用
这个标签可以嵌套在一起使用,一般用来表达多对多的关系映射中:
<select id=”query” parameterType=”int” resultMap=”mp1”>select s.*,st.id stid,st.days,t.id teaid,t.name tname from tb_student s left join tb_studentrelation st on s.id=st.sid left join tb_teacher t on t.id=st.tid where s.id=#{id} </select> <!-- 多对多的中间表的关系--> <resultMap type=”Student” id=”mp1”> <id property=”id” column=”id”/> <result property=”name” column=”name”/> <!--和中间表存在一对多--> <collection property=”list” ofType=”StudentRelation”><id property=”id” column=”stid”/><result property=”days” column=”days”/><!-- 中间表和教师表存在多对一--><association property=”teacher” javaType=”Teacher”><id property=”id” column=”teaid”/><result property=”name” column=”tname”/></association></collection> <resultMap>
collection和association嵌套使用
转载于:https://www.cnblogs.com/arrows/p/10382405.html
七、MyBatis教程之四多表关系的实现相关推荐
- MyBatis教程– CRUD操作和映射关系–第2部分
为了说明这一点,我们正在考虑以下示例域模型: 会有用户,每个用户可能都有一个博客,每个博客可以包含零个或多个帖子. 这三个表的数据库结构如下: CREATE TABLE user (user_id i ...
- MyBatis教程– CRUD操作和映射关系–第1部分
CRUD操作 MyBatis是一个SQL Mapper工具,与直接使用JDBC相比,它极大地简化了数据库编程. 步骤1:创建一个Maven项目并配置MyBatis依赖项. <project xm ...
- MySQL基础教程 包含SQL语句、约束、表关系、设计范式、多表、事务等
简介 数据库 数据库(Database):是按照数据结构来组织.存储和管理数据的仓库.每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据. 我们也可以将数据存 ...
- 001 spring5框架:java类工程,IOC:实体类表示表关系,AOP,JdbcTemplate模板,事务操作,Spring5 框架新功能:日志,为空注解,函数式风格,juint,Webflux
1. Spring5 框架(Spring5 Framework)介绍 1.1 概念 1.Spring 是轻量级的开源的 JavaEE 框架 2.Spring 可以解决企业应用开发的复杂性 3.Spri ...
- Mybatis教程-实战看这一篇就够了
推荐SpringCloud教程:https://blog.csdn.net/hellozpc/article/details/83692496 推荐Guava Cache教程:https://blog ...
- 转载:【OpenCV入门教程之四】 ROI区域图像叠加初级图像混合 全剖析
[OpenCV入门教程之四] ROI区域图像叠加&初级图像混合 全剖析 浅墨_毛星云 2014-03-10 12:48:05 157425 收藏 19 最后发布:2014-03-10 12:4 ...
- Scott Mitchell 的ASP.NET 2.0数据教程之四十五::DataList和Repeater数据排序
Scott Mitchell 的ASP.NET 2.0数据教程之四十五::DataList和Repeater数据排序(一) 原文 | 下载本教程中的编码例子 | 下载本教程的PDF版 (以后比较长的部 ...
- 【MyBatis教程】mybatis框架超全面详解总结
目录 一.什么是MyBatis 二.Mybatis相对JDBC有哪些优势 三.Mybatis框架的原理介绍 四.Mybatis全局配置文件 1.全局配置文件的类容和顺序 五.映射文件 1.输入映射pa ...
- 单元测试系列之八:Sonar 数据库表关系整理一(续)
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 简介:Sonar平台是目前较为流行的静态代码扫描平台,为了便于使用以及自己二次开发,有必要对它的数据库结构进行学习 ...
最新文章
- 论新时代软件测试人员的工作之道(一)之一个故事
- 彻底给你讲清楚分布式事务原理
- 机器学习之类别性特征
- 【Linux】【Basis】文件系统
- 【引用】phpmyadmin提示Access denied for user 'root'@'localhost' (using password: NO)的解决办法...
- python模糊查询_python实现字符串模糊匹配
- 14、mybatis多表关联查询 association定义关联对象封装规则及懒加载
- 默认权限umask、文件系统权限、特殊权限
- 在使用SVN,下载文件到本地时,一定要把全目录下载下来!
- [转]加载纹理与使用glGenTextures时应注意的一点(解决吃内存)
- python中的函数(全)
- python实现批量批量生成二维码并粘贴到另外图片上,便于打印扫描测试
- 单片机c语言程序编写步骤,Proteus运行Keil编写的51单片机C语言步骤
- 量子计算机需要的物理知识,量子计算机和物理学上的量子力学关系大吗?
- Collectors.joining()
- 如何关闭Windows Server 2012的IE增强安全配置
- android CheckBoxPreference title,summy字体大小设置
- 基于单片机的智能晾衣杆
- 一个程序员找工作的经历,感动!
- php导出excel文件
热门文章
- Docker通过Cgroup 资源配置
- Docker Compose编排(写法格式及实验)
- phpstudy mysql端口_完美解决phpstudy安装后mysql无法启动(无需删除原数据库,无需更改任何配置,无需更改端口)直接共存...
- linux进程 面试题,Linux面试题,浅析常见Linux命令面试题及答案
- python调用函数示例_python 动态调用函数实例解析
- unity双面显示在哪_双面屏努比亚Z20售3499起 4800万三摄+855Plus+4K电池
- 统计线段长度.lsp_折线统计图和条形统计图的知识点
- php显示控制器不存在,phpcms控制器不存在解决方法
- ajax实现滚动刷新,jquery如何实现滚动自动加载
- 谷歌Android无障碍套件,谷歌为无障碍套件添加盲文键盘:无需额外硬件就能打字...