解决Mybatis(mybatis-generator-core)自动生成插件重复问题Cause: java.lang.IllegalArgumentException

博主遇到Mybatis自动生成SQL时出现的重复ResultMap问题,通过在generatorConfig.xml中添加一条代码成功解决。具体解决方案是在commentGenerator标签内设置suppressAllComments属性为false,删除已生成的代码并重新生成。这有助于避免XML解析错误,确保代码的整洁和正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mybatis出现了自动生成sql的重复问题

找了半天结果一条代码解决了,看来还是了解的太少了。。。得加油!

org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'com/kkb/mapper/TeamMapper.xml'.

Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.kkb.mapper.TeamMapper.BaseResultMap

话不多说,一条代码解决

在generatorConfig.xml中加一条如下代码,value="false"把所有生成的代码删掉,重新生成一下

<!--去除注释 -->
<commentGenerator>
    <property name="suppressAllComments" value="false" />
</commentGenerator>
查询到结果啦
运行结果:

 

 

### 错误分析 当遇到 `java.lang.IllegalArgumentException` 异常提示参数 Maps 集合不包含 User 实体对应的值时,通常意味着 MyBatis 在尝试映射 SQL 查询结果到 Java 对象时找不到相应的映射定义。这可能是由于以下几个原因造成的: - Mapper XML 文件中的 `<select>` 或者其他标签内的 `parameterType` 属性指定的类型与实际传入方法的参数类型不符[^1]。 - 如果使用的是 resultMap,则需要确保该 resultMap 已经被正确定义并引用;如果同时存在 resultType 和 resultMap 可能会造成冲突或者覆盖问题[^3]。 ### 解决方案 #### 方法一:检查 parameterType 定义 确认传递给 mapper 接口的方法参数类型是否匹配于 XML 中声明的 `parameterType` 类型。例如,在接口中有如下签名: ```java List<User> selectUsers(@Param("name") String name); ``` 那么在对应的 XML 映射文件里应该有类似的配置: ```xml <select id="selectUsers" parameterType="string" resultType="com.example.mysport.bean.User"> SELECT * FROM users WHERE username LIKE CONCAT('%', #{name}, '%') </select> ``` #### 方法二:验证 resultMap 使用情况 如果是通过 resultMap 来处理复杂的结果集转换,请务必保证每一个 resultMap 都有一个唯一的 ID 并且正确设置了属性之间的关联关系。比如下面的例子展示了如何创建一个简单的 resultMap: ```xml <resultMap id="BaseResultMap" type="com.example.mysport.bean.User"> <id column="user_id" property="userId"/> <result column="username" property="userName"/> <!-- 更多字段 --> </resultMap> <select id="getUserById" resultMap="BaseResultMap"> SELECT user_id, username /*...*/ FROM users WHERE user_id = #{id} </select> ``` #### 方法三:排查重复生成的问题 对于由代码生成工具(如 mybatis-generator)引起的重复项导致的异常,可以考虑清理旧版本自动生成的内容或是调整 generatorConfig.xml 设置来防止重复条目出现。具体做法可参照特定场景下的最佳实践建议[^5]。 #### 方法四:调试与日志记录 启用更详细的日志级别可以帮助定位确切发生错误的位置。可以通过设置 log4j.properties 或 slf4j 等日志框架的相关配置实现这一点。 ```properties log4j.logger.org.apache.ibatis=DEBUG ``` 以上措施有助于诊断和修复此类异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值