• 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就是我们的逆向工程配置文件。

  • 相关阅读:
    Unreal Engine 4 —— Post Process Shader练手(第二弹)
    Unreal Engine 4 —— 冷却UI的制作
    C++ —— 自动Singleton的实现
    Unreal Engine 4 —— 可交互绳索的构建
    Unreal Engine 4 —— 基于Kajiya-Kay的材质迭代
    Unreal Engine 4 —— Kajiya-Kay Shading在UE4中的实现
    Technical Artist的不归路 —— Kajiya-Kay Shading
    C++ —— RAII编程思想
    C++ —— 宏对于简化类接口的奇技淫巧
    C++ —— 对象指针比较
  • 原文地址:https://www.cnblogs.com/kaspar/p/11642459.html
Copyright © 2020-2023  润新知