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实体 包含交易表中信息和拓展表中想要的字段信息

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值