Ibatis/MyBaits 1:N 一对多关系 处理

1:前言

我们经常会碰到1:N映射关系,会有这样一个业务需求,比如,一个话题下有很多的评价,我们需要获得这个话题和所有的评价,又比如一个评价下有很多指标,我们需要获得这个评价和所有指标,那么如何通过一次查询返回一个对象,这个对象包括了评价的基本属性和所有指标的列表?

2:需求

通过查询获得用户评价的信息和评价指标分数列表

已知以下表

用户评价表

评价指标表
指标表
要获得以下Dto

/**
 * Created by Mr.Cheng on 2017/3/18.
 */
public class UserEvaluate {
    private Integer id;       //ID
    private Integer userId;   //用户id 
    private String userName;  //用户名称
    private Integer evaluateId;//评价id
    private List<TagScore> tagScore;// 评价列表

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public Integer getEvaluateId() {
        return evaluateId;
    }

    public void setEvaluateId(Integer evaluateId) {
        this.evaluateId = evaluateId;
    }

    public List<TagScore> getTagScore() {
        return tagScore;
    }

    public void setTagScore(List<TagScore> tagScore) {
        this.tagScore = tagScore;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }
}

3:MyBaits实现

<resultMap type="UserEvaluate" id="userEvaluateMap" autoMapping="true">  //autoMapping 为自动匹配 userEvaluate 属性
		<id column="id" property="id"></id>    //这里一定要写
		<collection property="tagScore"  ofType="TagScore">    //collection 表示集合
			<id column="tagId" property="tagId"/>
			<result column="tag" property="tag"/>
			<result column="score" property="score"/>
		</collection>
</resultMap>
<select id="list" resultMap="userEvaluateMap">
	select ue.id,ue.userId,ue.userName,ue.evaluateId,t.tagId,et.score,t.tag from t_user_evaluate ue
 left join t_evaluate_tag et on(ue.evaluateId=et.evaluateId) LEFT JOIN t_tag t on (et.tagId=t.tagId)
</select>


结果:

4:IBaits 实现

待续。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值