Mapped Statements集合已包含值,但我只有一个具有相同签名的方法

时间:2017-02-25 08:58:15

标签: java mybatis

<mapper namespace="xyz.ivyxjc.RoleMapper">
   <resultMap id="roleMapper" type="role">
       <id column="id" property="roleName" javaType="string" jdbcType="VARCHAR"/>

       <result column="role_name" property="roleName" javaType="string" jdbcType="VARCHAR"/>
       <result column="note" property="note" typeHandler="xyz.ivyxjc.MyStringTypeHandler"/>
   </resultMap>
</mapper>



@ResultMap(value = "roleMapper")
@Select(value = "select id, role_name as roleName, note from t_role where id=#{id}")
public Role getRole(Long id);

但它有一个例外:

 java.lang.IllegalArgumentException: Mapped Statements collection already contains value for xyz.ivyxjc.RoleMapper.insertRole

如果我删除@ResultMap(value="roleMapper"),就可以了。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

只考虑问题标题:只有一个相同签名的方法,根据异常消息Mapped Statements collection already contains value for xyz.ivyxjc.RoleMapper.insertRole建议,在接口xyz.ivyxjc.RoleMapper中你声明更多一个名为insertRole的方法,无论它们的参数如何,然后它们的签名都不同。

如果语句已在XML mapper中声明而不是注释,则它们具有相同的id,这就是它无法工作的原因。

@Select@ResultMap似乎与当前问题完全无关。