mybatis查询多条记录,只返回最后一条

Jacob_Wang 2015-03-17 05:45:14

小弟第一次用mybatis做项目,遇到个小问题,请教一下各位大神。。


<!-- 关系表关联元素表 -->
<resultMap type="Relation" id="relationJoinElementResultMap">
<result column="m_id" property="mId" />
<result column="s_id" property="sId" />
<association property="element" javaType="Element">
<result column="id" property="id" />
<result column="name" property="name" />
<result column="type" property="type" />
</association>
</resultMap>

<!-- 查询某元素下级的子元素 -->
<select id="getElementBelow" resultMap="relationJoinElementResultMap" parameterType="Relation">
SELECT a.m_id, a.s_id, b.id, b.name, b.type
FROM MD_RELATION a, MD_ELEMENT b
WHERE a.s_id=b.id
AND a.m_id=#{mId}
AND a.flag=0
AND b.flag=0
</select>

以上是mapper.xml中的部分配置,目前是可以运行的。调用该查询可以得到多条记录

现在遇到的问题是,如果select后面的列名只有部分,结果集却只返回最后一条
比如我把SQL写成
SELECT b.id, b.name, b.type
FROM MD_RELATION a, MD_ELEMENT b
WHERE a.s_id=b.id
AND a.m_id=#{mId}
AND a.flag=0
AND b.flag=0
这时就不会返回所有结果集

这个问题很困惑,难道select的列必须和对应的resultMap的元素数量一一对应吗?
多个select的时候,如果要共用一个resultMap,那么所有的列都要检索出来吗?或者每个select单独对应一个resultMap?

可否有只返回部分列的办法?








...全文
15704 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
tpc1990519 2017-08-04
  • 打赏
  • 举报
回复 1
引用 5 楼 yyb649499163 的回复:
首先需要说明 select的列不需要和对应的resultMap的元素数量一一对应;mybatis使用association 时必须要保证key和association并列,简单来说就是select后面的列很多都可以省但a.m_id, a.s_id不可以省
5楼正解,必须至少有一个和association 并列同级的属性存在且不会重复的
社会你鬼哥 2016-12-22
  • 打赏
  • 举报
回复
请问 楼主怎么解决的 我使用二楼的方式怎么还是不行呢
竖心旁的情 2016-12-07
  • 打赏
  • 举报
回复
引用 2 楼 BaiShuiPaoFan 的回复:
推荐使用resultType="java.util.Map",可以是一条记录,可以是多条(多条control层使用List<Map<String, Object>>来接受返回数据)。使用resultMap="xxx.xxx.xxx"的话,如果后期数据库表增加字段,所花代价有点大,Bean、xml文件、业务层都需要对新增的这个字段进行代码的修改
感谢2楼,今天整天一天终于解决了
yyb0107 2016-03-19
  • 打赏
  • 举报
回复
yyb0107 2016-03-19
  • 打赏
  • 举报
回复
首先需要说明 select的列不需要和对应的resultMap的元素数量一一对应;mybatis使用association 时必须要保证key和association并列,简单来说就是select后面的列很多都可以省但a.m_id, a.s_id不可以省
qq_21076337 2015-09-11
  • 打赏
  • 举报
回复
用resultMap的collection来实现,把要关联的多条记录映射到包装类中
白水泡饭 2015-03-27
  • 打赏
  • 举报
回复
推荐使用resultType="java.util.Map",可以是一条记录,可以是多条(多条control层使用List<Map<String, Object>>来接受返回数据)。使用resultMap="xxx.xxx.xxx"的话,如果后期数据库表增加字段,所花代价有点大,Bean、xml文件、业务层都需要对新增的这个字段进行代码的修改
忘记呼吸 2015-03-27
  • 打赏
  • 举报
回复
平时还真没注意这个问题。。 看看别人有没有好的解决方法
eagledame 2015-03-26
  • 打赏
  • 举报
回复
遇到同样的问题 我是用mybatis + spring mvc

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧