Java Mybatis 联查join resultMap对应

需求:商品计量单位,其中计量单位名称是独立表里存储的,请求商品-计量单位时,需要把名称一起返回

以下代码 name 和 metering 二选一就可,这里方便测试,2个都写了,方便比较

// 商品计量单位表
public class GoodsMetering implements Serializable {
    private Long id;

    // 商品ID
    private Long goodsId
    // 基础档-计量单位ID
    private Long meteringId;
    // 售价
    private Integer price;
    // 进价
    private Integer purchasePrice;
    private Integer status;
    private Date createTime;
    private Date modifyTime;

    // 计量单位 名称
    private String name;
    // 计量单位,测试用
    private Metering metering;
}
// 基础档-计量单位
public class Metering implements Serializable {
    private Long id;

    // 计量单位名称
    private String name;
    private Date createTime;
    private Date modifyTime;
}

2种方式,

一种是直接在 GoodsMetering, 加个字段 名字 name,直接用 <result column>来实现:

一种是增加Metering字段,用association来实现

column表示sql语句里的字段名

property表示对象里的字段名

  <resultMap id="BaseJoinMeteringResultMap" type="com.ishehui.dmstore.entity.GoodsMetering" >
    <id column="id" property="id" jdbcType="BIGINT" />
    <result column="goods_id" property="goodsId" jdbcType="BIGINT" />
    <result column="metering_id" property="meteringId" jdbcType="BIGINT" />
    <result column="price" property="price" jdbcType="INTEGER" />
    <result column="purchase_price" property="purchasePrice" jdbcType="INTEGER" />
    <result column="status" property="status" jdbcType="INTEGER" />
    <result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
    <result column="modify_time" property="modifyTime" jdbcType="TIMESTAMP" />

    <result column="m_name" property="name" jdbcType="VARCHAR" />

    <association property="metering"  javaType="com.ishehui.dmstore.entity.Metering">
        <id column="m_id" property="id" />
        <result column="m_name" property="name"/>
    </association>

sql语句

  <select id="selectExtendByGoodsId" resultMap="BaseJoinMeteringResultMap" parameterType="java.lang.Long">
    select
    gm.id id,
    gm.goods_id goods_id,
    gm.metering_id metering_id,
    gm.price price,
    gm.purchase_price purchase_price,
    gm.status status,
    gm.create_time create_time,
    gm.modify_time modify_time,
    m.id m_id,
    m.name m_name
    from goods_metering gm left join metering m on gm.metering_id = m.id
    where gm.goods_id = #{goodsId,jdbcType=BIGINT}
    and gm.status = 10
  </select>

 

参考

MyBatis 多表连接查询

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页