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

 

 

posted @   可可西里(lemon)  阅读(747)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示