mybatis
mybatis resultmap 避免去重
·
mybatis 自定义 resultMap 避免去重
前言
在开发中遇到 表关联,逻辑上 是 一对多,查询数据 发现sql 语句 查询数据库,返回10条, 但是 经过 mybatis 的 resultMap 返回结果集之后,数据减少了。被去重了,问了度娘。 此问题再次记录一下。
解决办法
1、方法一 指定具体列
resultMap 映射的文件 要有主键 id, 或者要指定 按照那一列返回数据。
开始写法
<collection property="xxx" ofType="java.lang.Integer"> <result column="XXX"/>
</collection>
解决问题应该这样写
<collection property="xxx" ofType="java.lang.Integer" column="XXX"/>
2、 查询sql 中增加 伪列
MyBatis的ResultMap默认是把id作为map的主键,当id相同时,不管其他字段相不相同,它都当作相同的记录。那么主键是唯一的,所以他就会进行去重操作。
需求SQL查询中一个id下回有多个结果,这是我们需要的,但是ResultMap中,id为唯一主键,就会当他们是一条记录,自动去重。
方法步骤如下
1、在类中添加伪列属性;
2、SQL中添加伪列变量;
select
select
@rowNo:= @rowNo+1 as rowNo,
(select @rowNo:=0) as t,
name,
age
from t_user a join
t_score b on a.id=b.user_id
3、Mapper中添加对应的映射。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)