zoukankan      html  css  js  c++  java
  • jQueryrocket

    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 }
    View Code

    其中,generatorConfig.xml就是我们的逆向工程配置文件。

  • 相关阅读:
    Win10家庭版无法远程桌面连接的解决方法
    分分钟用上C#中的委托和事件之窗体篇
    分分钟用上C#中的委托和事件
    Fiddler工具使用介绍三
    Fiddler工具使用介绍二
    Fiddler工具使用介绍一
    Hexo主题开发
    IDEA 编译 Jmeter 4.0 ( 二次开发_1 )
    Pinpoint 安装部署
    接口测试总结
  • 原文地址:https://www.cnblogs.com/kaspar/p/11642459.html
Copyright © 2011-2022 走看看