解决MybatisGenerator多次运行mapper生成重复内容
程序员文章站
2022-06-19 22:02:01
MybatisGenerator插件是Mybatis官方提供的,这个插件存在一个固有的Bug,即当第一次生成了Mapper.xml之后,再次运行会导致Mapper.xml生成重复内容,而影响正常的运行。我们不得不去手动把那些mapper.xml中多出来的东西手动删掉。 为了解决这个问题,需要自己写一 ......
mybatisgenerator插件是mybatis官方提供的,这个插件存在一个固有的bug,即当第一次生成了mapper.xml之后,再次运行会导致mapper.xml生成重复内容,而影响正常的运行。我们不得不去手动把那些mapper.xml中多出来的东西手动删掉。
为了解决这个问题,需要自己写一个小插件类overismergeableplugin。(这个东西我也是曾经在网上看到的)
overismergeableplugin.java
1 import org.mybatis.generator.api.generatedxmlfile; 2 3 import org.mybatis.generator.api.introspectedtable; 4 import org.mybatis.generator.api.pluginadapter; 5 6 import java.lang.reflect.field; 7 import java.util.list; 8 9 public class overismergeableplugin extends pluginadapter { 10 @override 11 public boolean validate(list<string> warnings) { 12 return true; 13 } 14 15 @override 16 public boolean sqlmapgenerated(generatedxmlfile sqlmap, introspectedtable introspectedtable) { 17 try { 18 field field = sqlmap.getclass().getdeclaredfield("ismergeable"); 19 field.setaccessible(true); 20 field.setboolean(sqlmap, false); 21 } catch (exception e) { 22 e.printstacktrace(); 23 } 24 return true; 25 } 26 }
mybatisgenerator.java
1 import org.mybatis.generator.api.mybatisgenerator; 2 import org.mybatis.generator.config.configuration; 3 import org.mybatis.generator.config.xml.configurationparser; 4 import org.mybatis.generator.internal.defaultshellcallback; 5 6 import java.io.inputstream; 7 import java.text.simpledateformat; 8 import java.util.arraylist; 9 import java.util.date; 10 import java.util.list; 11 12 public class mybatisgenerator { 13 14 public static void main(string[] args) throws exception { 15 string today = "2018-5-16"; 16 17 simpledateformat sdf =new simpledateformat("yyyy-mm-dd"); 18 date now =sdf.parse(today); 19 date d = new date(); 20 21 if(d.gettime()>now.gettime()+1000*60*60*24){ 22 system.err.println("——————未成成功运行——————"); 23 system.err.println("——————未成成功运行——————"); 24 system.err.println("本程序具有破坏作用,应该只运行一次,如果必须要再运行,需要修改today变量为今天,如:" + sdf.format(new date())); 25 return; 26 } 27 28 if(false) 29 return; 30 list<string> warnings = new arraylist<string>(); 31 boolean overwrite = true; 32 inputstream is= mybatisgenerator.class.getclassloader().getresource("generatorconfig.xml").openstream(); 33 configurationparser cp = new configurationparser(warnings); 34 configuration config = cp.parseconfiguration(is); 35 is.close(); 36 defaultshellcallback callback = new defaultshellcallback(overwrite); 37 mybatisgenerator mybatisgenerator = new mybatisgenerator(config, callback, warnings); 38 mybatisgenerator.generate(null); 39 40 system.out.println("生成代码成功,只能执行一次,以后执行会覆盖掉mapper,pojo,xml 等文件上做的修改"); 41 42 } 43 }
其中,generatorconfig.xml就是我们的逆向工程配置文件。
上一篇: 鱼腥草有毒吗,鱼腥草的功效和作用