在myBatis< assoctiation>中传递多个列 [英] Passing multiple columns in myBatis <assoctiation>

查看:229
本文介绍了在myBatis< assoctiation>中传递多个列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道,我们如何在myBatis关联标签中传递多个列。



例如,我在一个mapper.xml中有以下xml片段file:

 < resultMap type =com.mysite.domain.CourseBuilderCoursesid =ResultMapWithAssmntsextends =BaseResultMap > 

< association property =totalAssignmentCntcolumn =course_idselect =selectTotalAssgnmentsCnt/>
< association property =totalAssessmentCntcolumn =course_idselect =selectTotalAssesmentsCnt/>
<! - 查看此关联>> - > < association property =subscriptioncolumn =course_idselect =com.mysite.persistence.mybatis.CourseSubscriptionMapper.selectByUsercId/>

< / resultMap>

如您所见,< association> 属性订阅只有一列 course_id



我想传递2列到它,因此产生的代码,我们如何做呢?



我试过以下组合,没有工作:

  column ={course_id,user_id}// null,null作为参数传递
column =course_id,user_id // null,null作为参数传递
column ={COURSE_ID = course_id,USER_ID = user_id}// null,null作为参数传递

但如果我通过单一,
column ={course_id}或column =course_id


解决方案

没有任何问题。



>您应该为复合键使用下一个语法:

  column ={prop1 = col1,prop2 = col2}。 

其中 prop1,prop2 关联查询和 col1,col2 是传递给该查询的sql列。



在您的情况下:



CourseMapper.xml

  column ={courseId = id,userId = user_id}
...
select id,user_id,.. 。from course ...

CourseSubscriptionMapper.xml

 < select id =selectByUsercId...> 
select ... where course_id =#{courseId} and user_id =#{userId}
< / select>

我只是检查它对我来说工作得很好。
如果您有任何问题,请随时问。


I want to know, how do we pass multiple columns in a myBatis association tag.

For example, I have the following xml snippet in one my mapper.xml file:

<resultMap type="com.mysite.domain.CourseBuilderCourses" id="ResultMapWithAssmnts" extends="BaseResultMap">

    <association property="totalAssignmentCnt" column="course_id" select="selectTotalAssgnmentsCnt"/>
    <association property="totalAssessmentCnt" column="course_id" select="selectTotalAssesmentsCnt"/>  
<!--  see this association >> --> <association property="subscription" column="course_id" select="com.mysite.persistence.mybatis.CourseSubscriptionMapper.selectByUsercId"/> 

  </resultMap>

As you can see, the <association> with property subscription has only one column, course_id

I want to pass 2 columns to it, and therefore the resultant code, how do we do that?

I tried the following combinations, none worked:

column="{course_id,user_id}"   // null,null are passed as parameters 
column="course_id,user_id"   // null,null are passed as parameters 
column="{COURSE_ID=course_id,USER_ID=user_id}"   // null,null are passed as parameters 

but if I pass single, column="{course_id}" or column="course_id"

works without any issues.

Any idea guys?

解决方案

You should use next syntax for composite key:

column="{prop1=col1,prop2=col2}".

Where prop1, prop2 is parameters of the associated query and col1, col2 is sql columns passed to that query.

In your case:

CourseMapper.xml:

column="{courseId=id,userId=user_id}" 
...
select id, user_id, ... from course ...

CourseSubscriptionMapper.xml:

<select id="selectByUsercId" ...>
    select ... where course_id=#{courseId} and user_id=#{userId}
</select>

I just checked it worked fine for me. If you have any questions, please feel free to ask.

这篇关于在myBatis&lt; assoctiation&gt;中传递多个列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆