zoukankan      html  css  js  c++  java
  • 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”对象中。

  • 相关阅读:
    java中的 equals 与 ==
    String类的内存分配
    SVN用命令行更换本地副本IP地址
    npoi 设置单元格格式
    net core 微服务框架 Viper 调用链路追踪
    打不死的小强 .net core 微服务 快速开发框架 Viper 限流
    net core 微服务 快速开发框架 Viper 初体验20201017
    Anno 框架 增加缓存、限流策略、事件总线、支持 thrift grpc 作为底层传输
    net core 微服务 快速开发框架
    Viper 微服务框架 编写一个hello world 插件02
  • 原文地址:https://www.cnblogs.com/tanshaoxiaoji/p/mybatis_oneTOone.html
Copyright © 2011-2022 走看看