mybatis 一对多映射踩过的坑

时间:2020-04-17
本文章向大家介绍mybatis 一对多映射踩过的坑,主要包括mybatis 一对多映射踩过的坑使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

实体类Sharing(省略get set):

public class Sharing implements Serializable {
    private Long sharingId;

    private Long userId;

    private Integer sharingTypeId;

    private String sharingDescribe;

    private String sharingUrl;

    private Integer sharingState;
}

实体类SharingType(省略get set):

public class SharingType implements Serializable{
    private Integer sharingTypeId;

    private Long userId;

    private String sharingName;

    private Integer sharingTypeState;

    private List<Sharing> sharingList;
}

SharingMapper.xml:

  <resultMap id="BaseResultMap" type="com.lemon.boboke.entity.Sharing">
    <id column="sharing_id" jdbcType="BIGINT" property="sharingId" />
    <result column="user_id" jdbcType="BIGINT" property="userId" />
    <result column="sharing_type_id" jdbcType="INTEGER" property="sharingTypeId" />
    <result column="sharing_describe" jdbcType="VARCHAR" property="sharingDescribe" />
    <result column="sharing_url" jdbcType="VARCHAR" property="sharingUrl" />
    <result column="sharing_state" jdbcType="INTEGER" property="sharingState" />
  </resultMap>

SpringTypeMapper.xml:

  <resultMap id="BaseResultMap" type="com.lemon.boboke.entity.SharingType">
    <id column="sharing_type_id" jdbcType="INTEGER" property="sharingTypeId" />
    <result column="user_id" jdbcType="BIGINT" property="userId" />
    <result column="sharing_name" jdbcType="VARCHAR" property="sharingName" />
    <result column="sharing_type_state" jdbcType="INTEGER" property="sharingTypeState" />
    <collection property="sharingList" resultMap="com.lemon.boboke.dao.SharingMapper.BaseResultMap"/>
  </resultMap>

踩坑的地方(返回类型:resultType="com.lemon.boboke.entity.SharingType"

  <select id="selectAllGroupByType" resultType="com.lemon.boboke.entity.SharingType">
    SELECT sht.*,shar.sharing_id,shar.sharing_describe,shar.sharing_url,shar.sharing_state FROM `sharing_type` AS sht
    inner JOIN `sharing` AS shar  ON sht.sharing_type_id = shar.sharing_type_id
    WHERE sht.user_id = (SELECT `user_id` FROM `user` WHERE `user`.user_account = #{userAccount})
    AND sht.sharing_type_state = 0 AND shar.sharing_state = 0
  </select>

 因为是多表查询,返回结果应该是新的映射BaseResultMap

原文地址:https://www.cnblogs.com/ldl326308/p/12720353.html