mybatis generator mapper.xml扩展

Jeff Butler写的mybatis generator虽然许久未更新,不过带来的便利是巨大的。
可以在pom.xml中获取源码,然后转成maven工程,自行修改源码。

<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.3.1</version>
</dependency>

扩展Base_Column_List
给每个字段增加表明,并设置别名.

<sql id="Base_Column_List_Udf">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Thu Oct 20 09:54:13 CST 2016.
    -->
    ccsDataDictionary.id id_ccsDataDictionary, ccsDataDictionary.display_field display_field_ccsDataDictionary, 
    ccsDataDictionary.value_field value_field_ccsDataDictionary, ccsDataDictionary.type type_ccsDataDictionary, 
    ccsDataDictionary.status status_ccsDataDictionary, ccsDataDictionary.description description_ccsDataDictionary, 
    ccsDataDictionary.creator creator_ccsDataDictionary, ccsDataDictionary.create_time create_time_ccsDataDictionary, 
    ccsDataDictionary.updator updator_ccsDataDictionary, ccsDataDictionary.update_time update_time_ccsDataDictionary
  </sql>

第一步
org.mybatis.generator.internal.rules.Rules中增加接口

boolean generateUdfBaseColumnList();

org.mybatis.generator.internal.rules.BaseRules重载generateUdfBaseColumnList

/**
     * @author dzm
     */
    @Override
    public boolean generateUdfBaseColumnList() {
    	return true;
    }

org.mybatis.generator.internal.rules.RulesDelegate中添加

/**
     * @author dzm
     */
	@Override
	public boolean generateUdfBaseColumnList() {
		return rules.generateUdfBaseColumnList();
	}

第二步
org.mybatis.generator.api.IntrospectedTable中InternalAttribute枚举中添加ATTR_BASE_COLUMN_LIST_ID_UDF
org.mybatis.generator.api.IntrospectedTable中添加方法

/**
     * @author dzm
     * @param s
     */
    public void setBaseColumnListIdUdf(String s) {
        internalAttributes.put(InternalAttribute.ATTR_BASE_COLUMN_LIST_ID_UDF, s);
    }
/**
     * @author dzm
     * @return
     */
    public String getUdfBaseColumnListId(){
    	return internalAttributes.get(InternalAttribute.ATTR_BASE_COLUMN_LIST_ID_UDF);
    }

第三步
org.mybatis.generator.codegen.mybatis3.xmlmapper.elements包下,新建类

public class UdfBaseColumnListElementGenerator extends AbstractXmlElementGenerator{
	
	public UdfBaseColumnListElementGenerator() {
		super();
	}

	@Override
	public void addElements(XmlElement parentElement) {
		
		String tableAlias = StringUtility.underlineToCame(introspectedTable.getAliasedFullyQualifiedTableNameAtRuntime());
		
		XmlElement answer = new XmlElement("sql"); //$NON-NLS-1$

        answer.addAttribute(new Attribute("id", //$NON-NLS-1$
                introspectedTable.getUdfBaseColumnListId()));

        context.getCommentGenerator().addComment(answer);

        StringBuilder sb = new StringBuilder();
        Iterator<IntrospectedColumn> iter = introspectedTable
                .getNonBLOBColumns().iterator();
        String column = null;
        while (iter.hasNext()) {
        	column = MyBatis3FormattingUtilities.getSelectListPhrase(iter.next());
            sb.append(tableAlias).append(".").append(column).append(" ").append(column).append("_").append(tableAlias);

            if (iter.hasNext()) {
                sb.append(", "); //$NON-NLS-1$
            }

            if (sb.length() > 80) {
                answer.addElement(new TextElement(sb.toString()));
                sb.setLength(0);
            }
        }

        if (sb.length() > 0) {
            answer.addElement((new TextElement(sb.toString())));
        }

        if (context.getPlugins().sqlMapBaseColumnListElementGenerated(
                answer, introspectedTable)) {
            parentElement.addElement(answer);
        }
		
	}

}

org.mybatis.generator.codegen.mybatis3.xmlmapper.XMLMapperGenerator中添加方法

/**
     * 增加自定义的BaseColumnList
     * @param parentElement
     */
    protected void addUdfBaseColumnListElement(XmlElement parentElement){
    	if (introspectedTable.getRules().generateUdfBaseColumnList()){
    		AbstractXmlElementGenerator elementGenerator = new UdfBaseColumnListElementGenerator();
    		initializeAndExecuteGenerator(elementGenerator, parentElement);
    	}
    }

getSqlMapElement方法中添加
addUdfBaseColumnListElement(answer);
第四步
将新的插件重新编译,并替换eclipse插件,或者maven的jar。
将打好的包,替换下图的三个jar,同一个包重命名三次即可。
插件
插件源码可以参考:mybatis_generator_extend

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

warrah

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值