mybatis多表查询(一个实体包含其他对象)

场景重现:
top_trans_order 订单表中是一笔交易的核心数据
top_trans_extend 订单拓展表中存储该笔交易的附加信息

需求:展示当前订单的全部信息 则必须获取交易拓展表中该笔交易的相关数据

解决方法:
Order 实体类包含它自身的所有字段属性,与此同时还要把交易拓展实体当做订单实体的属性
例如
一、实体类写法

@Data
public class TopTransOrder {
    private Long id;
    private String ordId;
    private String sourceRegionId;
    private String regionId;
    private String routeRegionId;
    private String productId;
    private String reqDate;
       ....... 多个字段
    // 交易拓展信息实体     topTransExtend必须与xml中的property属性值相同
     private TopTransExtend topTransExtend;
    }

二、mybatis映射器.xml写法
resultMap=“transExtendMap” 为拓展实体的map对应的ID

<resultMap id="BaseResultMap" type="类Order全路径">
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="ord_id" jdbcType="VARCHAR" property="ordId" />
    <result column="source_region_id" jdbcType="VARCHAR" property="sourceRegionId" />
    <result column="region_id" jdbcType="VARCHAR" property="regionId" />
    <result column="route_region_id" jdbcType="VARCHAR" property="routeRegionId" />
    <result column="product_id" jdbcType="VARCHAR" property="productId" />
    <result column="req_date" jdbcType="CHAR" property="reqDate" />
    ....................多个字段映射
      <collection property="topTransExtend" resultMap="transExtendMap"/>
  </resultMap>
   // 拓展表的map映射
   <resultMap id="transExtendMap" type="com.huifu.toprs.top.entity.TopTransExtend">
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="hb_fq_num" jdbcType="INTEGER" property="hbFqNum" />
    <result column="hb_fq_seller_percent" jdbcType="INTEGER" property="hbFqSellerPercent" />
  </resultMap>

三、sql写法:

<sql id="getTransOrderData">
    SELECT
        a.*,b.hb_fq_num,b.hb_fq_seller_percent
    FROM
        top_trans_order a
      LEFT JOIN
	    top_trans_extend b
    ON
	    a.ord_id = b.ord_id
  </sql>
  //查交易表的所有信息   交易拓展表中的部分字段  
<select id="selectCashTransId" parameterType="java.lang.String" resultMap="BaseResultMap">
    <include refid="getTransOrderData"/>
    where cash_trans_id = #{cashTransId,jdbcType=VARCHAR}
  </select>

这样就可以获得一个Order实体 包含交易表中信息和拓展表中想要的字段信息