源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

mybatis实现一对一关联映射实例代码

  • 时间:2022-11-24 15:06 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:mybatis实现一对一关联映射实例代码
[b]前言[/b] 在客观世界中,对象很少是孤独存在的,如班级与学生之间的关系,学生与课程之间的关系,它们的实例之间可以互相访问,这就是关联关系。MyBatis 的关联映射可以大大简化持久层数据的访问,关联关系的分类如下: [list] [*]一对一[/*] [*]一对多[/*] [*]多对多[/*] [/list] 我们首先绘制一个简化的 E-R 图来表示三种关联关系。 [img]http://files.jb51.net/file_images/article/201711/20171130110109041.png?2017103011117[/img] 上图表示的三种关系: [list] [*]一对一:一个班主任只属于一个班级,一个班级也只能有一个班主任[/*] [*]一对多:一个班级有多个学生,一个学生只属于一个班级[/*] [*]多对多:一个学生可以选多门课,一门课可以有多个学生选[/*] [/list] [b]引言[/b] 而在实际项目开发中,经常存在一对一的关系,如一个人对应一张身份证信息,这就是一对一的关系。下面是一个简单的 [b]实例:[/b] 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>
[b]注: [/b]在PersonMapper.xml中定义了一个<select/>标签,该标签的sql语句是根据Person表的主键字段来查询出唯一的Person信息,由于该Person表和IDCard表关联,因此返回一个resultMap值为personMap的映射对象。personMap使用了<association/>标签映射了一对一的关联关系,其标签内的属性select表示会以column的属性值"card_id"来作为参数执行IDCardMapper中定义的selectIDCardById查询对应的IDCard数据,查询出的数据会被封装到property属性值的“card”对象中。 [b]总结[/b] 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对编程素材网的支持。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部