MyBatis之association嵌套

    xiaoxiao2021-03-25  109

    表、实体类、myBatisConfig.xml文件、以及测试类请看MyBatis之一对一关联 ,没必要再复制一遍这些内容

    嵌套resultMap:

    [html]  view plain  copy   <?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>   嵌套select语句: [html]  view plain  copy   <?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(功力尚欠,这个问题就暂不做深究);

    实例如下:

    [html]  view plain  copy   <?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语句查询的条件不够灵活

    转载请注明原文地址: https://ju.6miu.com/read-22655.html

    最新回复(0)