解决 mybatis generator 覆盖生成mapper.xml时,xml中内容重复的问题

问题:

使用mybatis generator生成mapper.xml时,如果原来已经存在该Mapper.xml,再次生成时(比如开发过程中修改了数据库,需要重新生成pojo和mapper),会出现Mapper.xml中内容重复的问题。、

解决方法:

高版本mybatis(如1.3.7)中,已经修复该问题了, 如果使用的是低版本的mybatis,可以参考高版本mybatis的代码,自行改造mybatis的jar包。

mybatis-generator-core-1.3.7.jar中代码:

低版本中,GeneratedXmlFile中的 isMergeable 属性(该属性决定生成mapper.xml时是否合并)是私有的,并且没有set方法,所以可以通过反射,强制修改该字段值为false,参考代码如下:

import org.mybatis.generator.api.GeneratedXmlFile;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.PluginAdapter;

import java.lang.reflect.Field;
import java.util.List;

/**
 * 修复mybatis生成mapper.xml时会重复的问题
 *
 * @author DangerShi
 * @date 2020/5/7
 */
public class UnmergeableXmlMappersPlugin extends PluginAdapter {
    public boolean validate(List<String> warnings) {
        return true;
    }

    public boolean sqlMapGenerated(GeneratedXmlFile sqlMap, IntrospectedTable introspectedTable) {
        try {
            Field isMergeable = GeneratedXmlFile.class.getDeclaredField("isMergeable");
            isMergeable.setAccessible(true);
            isMergeable.setBoolean(sqlMap, false);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return true;
    }
}

之后在mybatis-generator的config配置中,添加该插件:

这样以后重新生成mapper.xml时就不会再重复了。

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值