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

Java Mapped Statements集合已包含值,但我只有一个具有相同签名的方法,java,mybatis,Java,Mybatis,如果我删除@ResultMap(value=“roleMapper”),就可以了 如何解决此问题?仅考虑问题标题:根据异常消息,它建议只有一个具有相同签名的方法:映射语句集合已包含xyz.ivyxjc.RoleMapper.insertRole的值,在接口xyz.ivyxjc.RoleMapper中,您声明了多个名为insertRole的方法,不管它们的参数是什么,然后它们的签名是不同的 如果语句是在XMLMapper中声明的,而不是在注释中声明的,那么它们将具有相同的id,这就是它无法工作的原

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


如何解决此问题?

仅考虑问题标题:根据异常消息,它建议只有一个具有相同签名的方法:
映射语句集合已包含xyz.ivyxjc.RoleMapper.insertRole的值,在接口
xyz.ivyxjc.RoleMapper
中,您声明了多个名为
insertRole
的方法,不管它们的参数是什么,然后它们的签名是不同的

如果语句是在XMLMapper中声明的,而不是在注释中声明的,那么它们将具有相同的id,这就是它无法工作的原因

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

<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