<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")
,就可以了。
我该如何解决这个问题?
答案 0 :(得分:0)
只考虑问题标题:只有一个相同签名的方法,根据异常消息Mapped Statements collection already contains value for xyz.ivyxjc.RoleMapper.insertRole
建议,在接口xyz.ivyxjc.RoleMapper
中你声明更多一个名为insertRole
的方法,无论它们的参数如何,然后它们的签名都不同。
如果语句已在XML mapper中声明而不是注释,则它们具有相同的id,这就是它无法工作的原因。
@Select
和@ResultMap
似乎与当前问题完全无关。