MyBatis Generator 自定义输出格式内容

自定义mybaits的数据格式和内容

1.使用maven的MyBatis-Generator。

2.定制自己的mybtis-generator-core.jar

1)git clone https://github.com/VoofChat/mybatis-generator-1.3.2 到本地
2)安装这个jar到本地仓库

mvn install -Dmaven.test.skip=true

3) 修改pom.xml文件

<build>
    <finalName>webapp</finalName>
      <plugins>
          <plugin>
              <groupId>org.mybatis.generator</groupId>
              <artifactId>mybatis-generator-maven-plugin</artifactId>
              <version>1.3.2</version>
              <configuration>
                  <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
                  <verbose>true</verbose>
                  <overwrite>true</overwrite>
              </configuration>
              <dependencies>
                  <dependency>
                      <groupId>com.voofchat.mybatis.generator</groupId>
                      <artifactId>mybatis-generator-core</artifactId>
                      <version>1.0.0</version>
                  </dependency>
              </dependencies>
          </plugin>
      </plugins>
  </build>

4)修改generatorConfig.xml文件

<commentGenerator type="org.mybatis.generator.internal.VoofchatCommentGenerator">
    <property name="javaFileEncoding" value="UTF-8"/>
    <!-- 是否去除自动生成的注释 true:是 : false:否 -->
    <property name="suppressAllComments" value="false" />
    <property name="suppressDate" value="true" />
</commentGenerator>

5)执行 mvn mybatis-generator:generate


MyBatis Generator 具体修改

参考:
mybatis配置说明:http://generator.sturgeon.mopaas.com/index.html
大象修改博客http://www.blogjava.net/bolo/archive/2015/03/25/423826.html
Mybatis-Generator详细配置:http://www.jianshu.com/p/e09d2370b796


修改记录:

修改记录:  1、Mapper.xml空格改成四个空格
修改详情:

org.mybatis.generator.api.dom.OutputUtilities

mybatis-generator 里面我觉得首先最应该改的就是 OutputUtilities 这个类,它里面有个 xmlIndent 方法是用来控制生成的 xml 文件中空格的缩进,默认是两个空格
但四个空格对于我们来说已经深入骨髓了,所以必须改。 在 sb.append( "  " ) 里面增加两个空格就可以了。 

2、修改dao包下的名称,由原来的XXXMapper改成XXXDao
修改详情:
org.mybatis.generator.api.IntrospectedTable

calculateJavaClientAttributes方法(大概820行)
 sb.append("Mapper");注释掉改成 sb.append("Dao");

3、修改Mybatis的Model生成JavaDoc注释内容:
1)generatorConfig.xml配置里面设置成:<property name="suppressAllComments" value="false"/>
代码修改详情:
org.mybatis.generator.internal.DefaultCommentGenerator里面的添加注释代码去掉,改成

------------------------------ code start ----------------------------------------
field.addJavaDocLine("/**");
field.addJavaDocLine(" * @Fields "+field.getName()+" "+introspectedColumn.getRemarks());
field.addJavaDocLine(" */");

------------------------------ code end ---------------------------------------------

4、org.mybatis.generator.internal.DefaultCommentGenerator修改XXXDao.java(XXXMapper.java)的接口方法的Javadoc注释
搜索org.mybatis.generator.internal.DefaultCommentGenerator如下方法,并注释方法里面内容,
public void addGeneralMethodComment(Method method,
            IntrospectedTable introspectedTable)

改成:

method.addJavaDocLine("/**");
method.addJavaDocLine(" * @Title " + method.getName());
for (Parameter parameter : method.getParameters()) {
     method.addJavaDocLine(" * @param " + parameter.getName());
}
String returnType = method.getReturnType().toString();
returnType = returnType.lastIndexOf(".") != -1 ? returnType.substring(returnType.lastIndexOf(".") + 1) : returnType;
method.addJavaDocLine(" * @return " + returnType);
method.addJavaDocLine(" */");

5、注释掉Model里面Getter和Setter方法的注释,根据需要自己加上配置
搜索org.mybatis.generator.internal.DefaultCommentGenerator如下方法:
public void addGetterComment(Method method,
            IntrospectedTable introspectedTable,
            IntrospectedColumn introspectedColumn)

public void addSetterComment(Method method,
            IntrospectedTable introspectedTable,
            IntrospectedColumn introspectedColumn)

6、注释掉Mapper.xml里面的<!-- 注释 -->,实际使用未用到
搜索org.mybatis.generator.internal.DefaultCommentGenerator如下方法:
public void addComment(XmlElement xmlElement) 

7、XML里面每个SQL增加一个换行
org.mybatis.generator.api.dom.xml.XmlElement里面getFormattedContent里面加上:
if(indentLevel == 1) {
    //每个insert/update/select之间插入一个空行
    OutputUtilities.newLine(sb);
}

8、修改mybatis的mapper.xml文件里面insert和update不根据字段判断的非动态SQL
org.mybatis.generator.codegen.mybatis3.xmlmapper.XMLMapperGenerator
里面的getSqlMapElement方法

注释掉:
addInsertElement(answer);
addUpdateByPrimaryKeyWithoutBLOBsElement(answer);

对应的是mapper.xml里面的
<insert id="insert" parameterType="xxx" ></insert>
<update id="updateByPrimaryKey" parameterType="xxx" ></update>

9.自生成包路径
DefaultShellCallback.java,由于运行时,如果找不到xml配置的包名,在此类中会抛出异常,因此在这里,修改一下,直接创建文件
在这个类中第50行处,注释掉1,添加2
File project = new File(targetProject);
        if (!project.isDirectory()) {
//            throw new ShellException(getString("Warning.9", //$NON-NLS-1$
//                    targetProject));
            project.mkdirs();
        }
10.自定义实体类名称
IntrospectedTable.java中calculateModelAttributes方法中修改如下:
sb.setLength(0);
sb.append(pakkage);
sb.append('.');
sb.append("MiniappHaowu"); // add by zzx
sb.append(fullyQualifiedTable.getDomainObjectName());
sb.append("Po");//add by zzx
setBaseRecordType(sb.toString());

11.自定义dao类名称
IntrospectedTable.java中calculateJavaClientAttributes方法中修改如下:
sb.setLength(0);
sb.append(calculateJavaClientInterfacePackage());
sb.append('.');
sb.append(fullyQualifiedTable.getDomainObjectName());
//        sb.append("Mapper"); //$NON-NLS-1$
sb.append("Dao");

12.自定义mapper文件名称
protected String calculateMyBatis3XmlMapperFileName() {
    StringBuilder sb = new StringBuilder();
    sb.append("MiniappHaowu");
    sb.append(fullyQualifiedTable.getDomainObjectName());
    sb.append("Dao.xml"); //$NON-NLS-1$
    return sb.toString();
}

13.SQL生成中修改数据库表名称
/Users/bjhl/Desktop/javaPorjects/mybatis-generator-core/src/main/java/org/mybatis/generator/api/IntrospectedTable.java
public String getFullyQualifiedTableNameAtRuntime() {
//        return internalAttributes
//                .get(InternalAttribute.ATTR_FULLY_QUALIFIED_TABLE_NAME_AT_RUNTIME);

        String tableNameAtRuntime =
                AppConfig.DATABASE_NAME + ".`"
                + internalAttributes.get(InternalAttribute.ATTR_FULLY_QUALIFIED_TABLE_NAME_AT_RUNTIME)
                + "`";
        return tableNameAtRuntime;
    }

    /**
     * Gets the aliased fully qualified table name at runtime.
     *
     * @return the aliased fully qualified table name at runtime
     */
    public String getAliasedFullyQualifiedTableNameAtRuntime() {
//        return internalAttributes
//                .get(InternalAttribute.ATTR_ALIASED_FULLY_QUALIFIED_TABLE_NAME_AT_RUNTIME);

        String tableNameAtRuntime =
                AppConfig.DATABASE_NAME + ".`"
                + internalAttributes.get(InternalAttribute.ATTR_ALIASED_FULLY_QUALIFIED_TABLE_NAME_AT_RUNTIME)
                + "`";
        return tableNameAtRuntime;
    }

效果如下:
这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值