用过mybatis的同学应该都知道mybatis generator(下文简称MBG)这个插件,他帮助我们生成用来操作数据库的mybatis相关代码,通常包括这三类代码:java entity、mapper xml、mapper interface.关于mybatis和MBG的基本使用,这里不多做介绍,本文主要介绍MBG生成mybatis代码过程中遇到的两个问题和解决方案。本文将以一张person表作为例子,进行讲解。
1.MBG每次运行时,生成的PersonMappper.xml追加导致项目无法启动
在项目开发前期,我们经常遇到表结构设计不合理或者因需求变更,导致需要改动表字段的情况。那么,当我们再次运行插件生成代码时,新生成xml的内容,会默认追加到PersonMapper.xml文件中。这样就会导致xml里有两个id一样的sql,当我们启动项目时,会看到如下的报错:
网上也有多解决方案,多大是基于继承PluginAdapter类做一些定制化的开发的方案,这种方案固然可以,但是对于开发人员的编码能力和质量是很一定考验的,并且比较耗时,占用工作量并且有风险的事情我们不做。优雅的我,不喜欢使用这种具有破坏性的方式,坚信MBG官方一定有相应的配置来支持这种需求,功夫不负有心人,在MBG的github 1.3.7版本日志里找到了如下说明: