栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MyBatis Generator使用过程中踩过的一个坑

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MyBatis Generator使用过程中踩过的一个坑

SpringBoot实战电商项目mall(20k+star)地址:https://github.com/macrozheng/mall

摘要

在使用MyBatis Generator生成代码的过程中,曾经遇到一个坑,每次生成mapper.xml的时候并不是直接覆盖原文件,而是在原文件中追加了新的内容,导致运行项目出错,本文主要讲解如何解决这个问题。

问题重现 示例代码

使用的是mall-tiny-02的代码,代码地址:https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-02

直接运行MallTinyApplication的main函数

发现正常运行,启动成功!

运行代码生成器

运行com.macro.mall.tiny.mbg.Generator的main方法

重新启动MallTinyApplication的main函数

发现已经无法正常运行,其中有这么一行关键性的错误:

nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML.  
The XML location is 'file [D:developergithubmall-learningmall-tiny-02targetclassescommacromalltinymbgmapperPmsBrandMapper.xml]'.  
Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.macro.mall.tiny.mbg.mapper.PmsBrandMapper.baseResultMap  

表明了PmsBrandMapper.xml文件解析错误,baseResultMap重复定义。

查看PmsBrandMapper.xml文件

从中可以发现MyBatis Generator生成的mapper.xml文件信息是直接追加在原来的文件上的,并不是直接覆盖,导致了这个错误。

问题解决

以前一直以为是MyBatis Generator生成的问题,直接删除mapper.xml所在文件夹,重新生成就好了,现在提供一种MyBatis Generator官方提供的解决方法。

升级MyBatis Generator的版本

MyBatis Generator 在1.3.7版本提供了解决方案,我们目前使用的版本为1.3.3。

  
 org.mybatis.generator mybatis-generator-core 1.3.7  
在generatorConfig.xml文件中添加覆盖mapper.xml的插件
  
  
重新运行代码生成器

发现PmsBrandMapper.xml生成已经正常,应用也可以正常运行了。

项目源码地址

https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-02

关于作者

macrozheng 【id:macrozheng】
专注Java技术分享,mall项目全套学习教程连载中,作者Github项目mall(20k+star)

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号