java - 在 myBatis <association> 中传递多个列

标签 java database mybatis

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

例如,我的一个 mapper.xml 文件中有以下 xml 片段:

<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>

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

我想将 2 列传递给它,因此要传递结果代码,我们该怎么做?

我尝试了以下组合,但均无效:

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 

但如果我通过单例, 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>

我刚刚检查过它对我来说工作正常。 如果您有任何问题,请随时提出。

关于java - 在 myBatis <association> 中传递多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17193040/

相关文章:

mysql - mybatis 3中集合和关联映射的区别

c# - 如何获取本地文件的id

java - 如何从变量设置数据库登录信息?

java - Android程序修改

java - 在 Hibernate 5.3 上获取带有 id 的实体列表

java - WebTarget 和线程安全

java - 如何通过表单上传文件并让 Java 将其作为输入流处理?

Java自动创建数据库

sql - 用另一行的某些值更新每一行

java - MyBatis 中不同关联中两次映射同一个表