mybatis 一对一关联映射实例

在实际项目开发中,经常存在一对一的关系,如一个人对应一张身份证信息,这就是一对一的关系。下面是一个简单的实例:

1、建表过程我就省略了,主要是一张Person表,一张IDCard表,其相关属性见步骤2Pojo类属性所示;

2、建立一个Person对象和一个IDCard对象:

  mybatis/pri/xiaoyang/otot/pojo/IDCard.java

1 public class IDCard implements Serializable {
2     private int id; // 主键
3     private String cardCode; // 身份证编号
4     private String carAddress; // 身份证地址
5     //构造函数及Getter/Setter/toString...
6 }


         mybatis/pri/xiaoyang/otot/pojo/Person.java

1 public class Person implements Serializable {
2     private int id; // 主键
3     private String name; // 姓名
4     private String sex; // 性别
5     private IDCard iDCard; //身份证对象,人和身份证一对一关系
6     //构造函数及Getter/Setter/toString...
7 }

 

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”对象中。

转载于:https://www.cnblogs.com/tanshaoxiaoji/p/mybatis_oneTOone.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值