表、實體類、myBatisConfig.xml文件、以及測試類請看MyBatis之一對一關聯 ,沒必要再複製一遍這些內容
嵌套resultMap:
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="sysUser3">
- <resultMap type="com.chensan.sys.entity.SysUser3" id="sys_user3" autoMapping="true">
- <id property="id" column="id"/>
- <result property="company" column="company"/>
- <result property="salary" column="salary"/>
- <association property="idCard" column="card_id" resultMap="idCard1Mapper"/>
- </resultMap>
- <resultMap type="com.chensan.identity.entity.IdCard1" id="idCard1Mapper" autoMapping="true">
- <result property="cardNo" column="card_no"/>
- <result property="userName" column="user_name"/>
- </resultMap>
- <!-- 一對一:一個用戶對應一份身份信息 -->
- <!-- 方式二:嵌套resultMap查詢 -->
- <select id="getUserIdCard1" parameterType="int" resultMap="sys_user3">
- SELECT * FROM `sys_user3` t1, `id_card1` t2
- WHERE t1.`card_id`=t2.`id`
- AND t1.`id`=#{id}
- </select>
- </mapper>
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="sysUser3">
- <!-- 一對一:一個用戶對應一份身份信息 -->
- <!-- 方式二:嵌套select語句查詢 -->
- <select id="getUserIdCard1" parameterType="int" resultMap="sys_user3">
- SELECT * FROM `sys_user3` WHERE `id`=#{id}
- </select>
- <select id="getCardInfo" parameterType="int" resultMap="idCard1Mapper">
- SELECT * FROM `id_card1` WHERE `id`=#{id}
- </select>
- <resultMap type="com.chensan.sys.entity.SysUser3" id="sys_user3" autoMapping="true">
- <id property="id" column="id"/>
- <result property="company" column="company"/>
- <result property="salary" column="salary"/>
- <association property="idCard" column="card_id" select="getCardInfo"/>
- </resultMap>
- <resultMap type="com.chensan.identity.entity.IdCard1" id="idCard1Mapper" autoMapping="true">
- <result property="cardNo" column="card_no"/>
- <result property="userName" column="user_name"/>
- </resultMap>
- </mapper>
association直接寫result和association引用resultMap應該算是差不多的用法,然後嵌套select語句查詢爲另一種方式,那麼select語句這種方式是否可不用resultMap,而把result放在association呢?事實證明,行不通。被實體屬性與數據表列不同名的,列出對應關係仍爲null(功力尚欠,這個問題就暫不做深究);
實例如下:
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="sysUser3">
- <!-- 一對一:一個用戶對應一份身份信息 -->
- <select id="getUserIdCard1" parameterType="int" resultMap="sys_user3">
- SELECT * FROM `sys_user3` WHERE `id`=#{id}
- </select>
- <select id="getCardInfo" parameterType="int" resultType="com.chensan.identity.entity.IdCard1">
- SELECT * FROM `id_card1` WHERE `id`=#{id}
- </select>
- <resultMap type="com.chensan.sys.entity.SysUser3" id="sys_user3" autoMapping="true">
- <id property="id" column="id"/>
- <result property="company" column="company"/>
- <result property="salary" column="salary"/>
- <association property="idCard" column="card_id"
- javaType="com.chensan.identity.entity.IdCard1" autoMapping="true"
- select="getCardInfo">
- <result property="cardNo" column="card_no"/>
- <result property="userName" column="user_name"/>
- </association>
- </resultMap>
- </mapper>
association嵌套參考:MyBatis association的兩種形式
始終覺得嵌套select語句查詢的條件不夠靈活