mybatis实现一对一关联映射实例代码
前言
在客观世界中,对象很少是孤独存在的,如班级与学生之间的关系,学生与课程之间的关系,它们的实例之间可以互相访问,这就是关联关系。mybatis 的关联映射可以大大简化持久层数据的访问,关联关系的分类如下:
- 一对一
- 一对多
- 多对多
我们首先绘制一个简化的 e-r 图来表示三种关联关系。
上图表示的三种关系:
- 一对一:一个班主任只属于一个班级,一个班级也只能有一个班主任
- 一对多:一个班级有多个学生,一个学生只属于一个班级
- 多对多:一个学生可以选多门课,一门课可以有多个学生选
引言
而在实际项目开发中,经常存在一对一的关系,如一个人对应一张身份证信息,这就是一对一的关系。下面是一个简单的
实例:
1、建表过程我就省略了,主要是一张person表,一张idcard表,其相关属性见步骤2pojo类属性所示;
2、建立一个person对象和一个idcard对象:
mybatis/pri/xiaoyang/otot/pojo/idcard.java
public class idcard implements serializable { private int id; // 主键 private string cardcode; // 身份证编号 private string caraddress; // 身份证地址 //构造函数及getter/setter/tostring... }
mybatis/pri/xiaoyang/otot/pojo/person.java
public class person implements serializable { private int id; // 主键 private string name; // 姓名 private string sex; // 性别 private idcard idcard; //身份证对象,人和身份证一对一关系 //构造函数及getter/setter/tostring... }
3、接下来是xml映射文件:
mybatis/pri/xiaoyang/otot/mapper/idcardmapper.xml
<mapper namespace="pri.xiaoyang.otot.mapper.idcardmapper"> <!-- 根据主键查询idcard信息,封装为idcard对象并返回 --> <select id="selectidcardbyid" pamaetertype="int" resulttype="pri.xiaoyang.otot.pojo.idcard"> select * from idcard where id = #{id} </select> </mapper>
mybatis/pri/xiaoyang/otot/mapper/personmapper.xml
<mapper namespace="pri.xiaoyang.otot.mapper.personmapper"> <!-- 根据person主键查询person信息,封装为person对象并返回 --> <select id="selectpersonbyid" pamaetertype="int" resultmap="personmapper"> select * from person where id = #{id} </select> <!-- 映射person对象的resultmap --> <resultmap type="pri.xiaoyang.otot.pojo.person" id="personmapper"> <id property="id" column="id" /> <result property="name" column="name" /> <result property="sex" column="sex" /> <!-- 一对一关联映射:association --> <association property="idcard" column="card_id" select="pri.xiaoyang.otot.mapper.idcardmapper.selectidcardbyid" javatype="pri.xiaoyang.otot.pojo.idcard"/> </resultmap > </mapper>
注: 在personmapper.xml中定义了一个<select/>标签,该标签的sql语句是根据person表的主键字段来查询出唯一的person信息,由于该person表和idcard表关联,因此返回一个resultmap值为personmap的映射对象。personmap使用了<association/>标签映射了一对一的关联关系,其标签内的属性select表示会以column的属性值"card_id"来作为参数执行idcardmapper中定义的selectidcardbyid查询对应的idcard数据,查询出的数据会被封装到property属性值的“card”对象中。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
下一篇: iReport生成pdf打印的实例代码
推荐阅读
-
mybatis实现一对一关联映射实例代码
-
Spring boot + mybatis + Vue.js + ElementUI 实现数据的增删改查实例代码(二)
-
Spring boot + mybatis + Vue.js + ElementUI 实现数据的增删改查实例代码(一)
-
Spring boot + mybatis + orcale实现步骤实例代码讲解
-
Spring boot + mybatis + Vue.js + ElementUI 实现数据的增删改查实例代码(一)
-
Spring boot + mybatis + Vue.js + ElementUI 实现数据的增删改查实例代码(二)
-
mybatis 一对一、一对多和多对多查询实例代码
-
mybatis 一对一、一对多和多对多查询实例代码
-
Spring boot + mybatis + orcale实现步骤实例代码讲解
-
mybatis实现一对一关联映射实例代码