关于mybatis的collection嵌套结果的问题。

jackcoding 2015-03-06 02:47:06
目前有1个Blog类,里面除了自己的字段还有一个存储Post类的集合(一个博客有多篇文章),我使用嵌套查询给Blog类中的集合赋值没有问题,但是换成嵌套结果之后,输出的结果就不一样了,我把代码贴上来。
public class Blog {
private int id;
private String name;
private String pwd;
private Author author;
private List<Post> posts;

public class Post {
private int id;
private String post_message;
private int blog_id;

这个是博客实体类,里面有个存放文章的List集合
<mapper namespace="org.mybatis.example.BlogMapper">
<resultMap type="Blog" id="blogResultMap">
<id property="id" column="id"/>
<result property="name" column="name"/>
<collection property="posts" javaType="ArrayList" ofType="Post" resultMap="postResultMap"/>
</resultMap>
<resultMap type="Post" id="postResultMap">
<id property="id" column="id"/>
<result property="post_message" column="post_message"/>
<result property="blog_id" column="blog_id"/>
</resultMap>
<select id="selectAll" parameterType="int" resultMap="blogResultMap">
select p.id,p.post_message,p.blog_id,b.id,b.name,b.pwd
from blog b left outer join post p on b.id = p.blog_id where b.id = #{id}
</select>

现在的问题是,使用这个select查询出的信息是3条,数据库中Blog类的信息有1个,Post的信息由3个且都有外键连接到Blog,使用嵌套查询的结果是Blog查询出1个,集合里面的信息是3个。但是换成嵌套结果后,查询到的信息就变成了,Blog有3条且都一样,Post的信息需要从List<Blog>里面一条一条取出,这个该怎么改?
...全文
1413 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackcoding 2015-03-06
  • 打赏
  • 举报
回复
引用 1 楼 suciver 的回复:
你只能用嵌套查询,mybatis内部的赋值是根据你查询出来的结果做的,你这个查询语句就是产生了3条一样的Blog数据对应不一样的Post数据,mybatis就认为他返回了一个集合.每条都是一样的blog不一样的Post
哦,是这样啊,我前面刚看了关联的嵌套查询和嵌套结果,效果是一样的,我就以为集合的嵌套查询和嵌套结果的效果也能一样呢。
suciver 2015-03-06
  • 打赏
  • 举报
回复
你只能用嵌套查询,mybatis内部的赋值是根据你查询出来的结果做的,你这个查询语句就是产生了3条一样的Blog数据对应不一样的Post数据,mybatis就认为他返回了一个集合.每条都是一样的blog不一样的Post

67,550

社区成员

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

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