MyBatis之association嵌套

表、實體類、myBatisConfig.xml文件、以及測試類請看MyBatis之一對一關聯 ,沒必要再複製一遍這些內容

嵌套resultMap:

[html] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"   
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  4.   
  5. <mapper namespace="sysUser3">  
  6.   <resultMap type="com.chensan.sys.entity.SysUser3" id="sys_user3" autoMapping="true">  
  7.     <id property="id" column="id"/>  
  8.     <result property="company" column="company"/>  
  9.     <result property="salary" column="salary"/>  
  10.       
  11.     <association property="idCard" column="card_id" resultMap="idCard1Mapper"/>  
  12.   </resultMap>  
  13.     
  14.   <resultMap type="com.chensan.identity.entity.IdCard1" id="idCard1Mapper" autoMapping="true">  
  15.     <result property="cardNo" column="card_no"/>  
  16.     <result property="userName" column="user_name"/>  
  17.   </resultMap>  
  18.   
  19.   <!-- 一對一:一個用戶對應一份身份信息 -->  
  20.   <!-- 方式二:嵌套resultMap查詢 -->  
  21.   <select id="getUserIdCard1" parameterType="int" resultMap="sys_user3">  
  22.     SELECT * FROM `sys_user3` t1, `id_card1` t2   
  23.     WHERE t1.`card_id`=t2.`id`   
  24.     AND t1.`id`=#{id}  
  25.   </select>  
  26. </mapper>  
嵌套select語句:
[html] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"   
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  4.   
  5. <mapper namespace="sysUser3">  
  6.   <!-- 一對一:一個用戶對應一份身份信息 -->  
  7.   <!-- 方式二:嵌套select語句查詢 -->  
  8.   <select id="getUserIdCard1" parameterType="int" resultMap="sys_user3">  
  9.     SELECT * FROM `sys_user3` WHERE `id`=#{id}  
  10.   </select>  
  11.     
  12.   <select id="getCardInfo" parameterType="int" resultMap="idCard1Mapper">  
  13.     SELECT * FROM `id_card1` WHERE `id`=#{id}  
  14.   </select>  
  15.     
  16.   <resultMap type="com.chensan.sys.entity.SysUser3" id="sys_user3" autoMapping="true">  
  17.     <id property="id" column="id"/>  
  18.     <result property="company" column="company"/>  
  19.     <result property="salary" column="salary"/>  
  20.       
  21.     <association property="idCard" column="card_id" select="getCardInfo"/>  
  22.   </resultMap>  
  23.   
  24.   <resultMap type="com.chensan.identity.entity.IdCard1" id="idCard1Mapper" autoMapping="true">  
  25.     <result property="cardNo" column="card_no"/>  
  26.     <result property="userName" column="user_name"/>  
  27.   </resultMap>  
  28. </mapper>  

association直接寫result和association引用resultMap應該算是差不多的用法,然後嵌套select語句查詢爲另一種方式,那麼select語句這種方式是否可不用resultMap,而把result放在association呢?事實證明,行不通。被實體屬性與數據表列不同名的,列出對應關係仍爲null(功力尚欠,這個問題就暫不做深究);

實例如下:

[html] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"   
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  4.   
  5. <mapper namespace="sysUser3">  
  6.   <!-- 一對一:一個用戶對應一份身份信息 -->  
  7.   <select id="getUserIdCard1" parameterType="int" resultMap="sys_user3">  
  8.     SELECT * FROM `sys_user3` WHERE `id`=#{id}  
  9.   </select>  
  10.     
  11.   <select id="getCardInfo" parameterType="int" resultType="com.chensan.identity.entity.IdCard1">  
  12.     SELECT * FROM `id_card1` WHERE `id`=#{id}  
  13.   </select>  
  14.     
  15.   <resultMap type="com.chensan.sys.entity.SysUser3" id="sys_user3" autoMapping="true">  
  16.     <id property="id" column="id"/>  
  17.     <result property="company" column="company"/>  
  18.     <result property="salary" column="salary"/>  
  19.       
  20.     <association property="idCard" column="card_id"   
  21.       javaType="com.chensan.identity.entity.IdCard1" autoMapping="true"   
  22.       select="getCardInfo">  
  23.       <result property="cardNo" column="card_no"/>  
  24.       <result property="userName" column="user_name"/>  
  25.     </association>  
  26.   </resultMap>  
  27.   
  28. </mapper>  

association嵌套參考:MyBatis association的兩種形式

始終覺得嵌套select語句查詢的條件不夠靈活

發佈了102 篇原創文章 · 獲贊 49 · 訪問量 33萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章