您的位置:首页 > 其它

myBatis-generator 生成中文注释的问题

2017-03-27 13:25 453 查看
mybatis.generator的官方插件只能生成一些无用的英文注释,要生成中文注释需要修改源代码。

现在以mybatis.generator-1.3.5为例,说明修改源代码的内容。

修改的内容一共两个类:DefaultCommentGenerator.java和 MyBatisGenerator.java ;这两个类均来自org.mybatis.generator.core_1.3.5.201609070108.jar包;

首先需要下载它的源码包:org.mybatis.generator.core.source_1.3.5.201609070108.jar

1、修改DefaultCommentGenerator.java(解决中文注释的问题);

package org.mybatis.generator.internal;

import java.util.Date;

import java.util.Properties;

import org.mybatis.generator.api.CommentGenerator;

import org.mybatis.generator.api.IntrospectedColumn;

import org.mybatis.generator.api.IntrospectedTable;

import org.mybatis.generator.api.dom.java.CompilationUnit;

import org.mybatis.generator.api.dom.java.Field;

import org.mybatis.generator.api.dom.java.InnerClass;

import org.mybatis.generator.api.dom.java.InnerEnum;

import org.mybatis.generator.api.dom.java.JavaElement;

import org.mybatis.generator.api.dom.java.Method;

import org.mybatis.generator.api.dom.java.TopLevelClass;

import org.mybatis.generator.api.dom.xml.XmlElement;

import org.mybatis.generator.internal.util.StringUtility;

public class DefaultCommentGenerator implements CommentGenerator {

private Properties properties;

private boolean suppressDate;

private boolean suppressAllComments;

public DefaultCommentGenerator() {

this.properties = new Properties();

this.suppressDate = false;

this.suppressAllComments = false;

}

public void addJavaFileComment(CompilationUnit compilationUnit) {

}

public void addComment(XmlElement xmlElement) {

if (this.suppressAllComments) {

}

}

public void addRootComment(XmlElement rootElement) {

}

public void addConfigurationProperties(Properties properties) {

this.properties.putAll(properties);

this.suppressDate = StringUtility.isTrue(properties.getProperty("suppressDate"));

this.suppressAllComments = StringUtility.isTrue(properties.getProperty("suppressAllComments"));

}

protected void addJavadocTag(JavaElement javaElement, boolean markAsDoNotDelete) {

javaElement.addJavaDocLine(" *");

StringBuilder sb = new StringBuilder();

sb.append(" * ");

sb.append("@mbggenerated");

if (markAsDoNotDelete) {

sb.append(" do_not_delete_during_merge");

}

String s = getDateString();

if (s != null) {

sb.append(' ');

sb.append(s);

}

javaElement.addJavaDocLine(sb.toString());

}

protected String getDateString() {

if (this.suppressDate) {

return null;

}

return new Date().toString();

}

public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable) {

if (this.suppressAllComments) {

}

}

public void addEnumComment(InnerEnum innerEnum, IntrospectedTable introspectedTable) {

if (this.suppressAllComments) {

}

}

public void addFieldComment(Field field, IntrospectedTable introspectedTable,

IntrospectedColumn introspectedColumn) {

if (this.suppressAllComments) {

return;

}

StringBuilder sb = new StringBuilder();

sb.append(" /** ");

sb.append(introspectedColumn.getRemarks());

sb.append(" ");

sb.append(introspectedTable.getFullyQualifiedTable());

sb.append('.');

sb.append(introspectedColumn.getActualColumnName());

sb.append(" */");

field.addJavaDocLine(sb.toString());

}

public void addFieldComment(Field field, IntrospectedTable introspectedTable) {

if (this.suppressAllComments) {

}

}

public void addGeneralMethodComment(Method method, IntrospectedTable introspectedTable) {

if (this.suppressAllComments) {

}

}

public void addGetterComment(Method method, IntrospectedTable introspectedTable,

IntrospectedColumn introspectedColumn) {

if (this.suppressAllComments) {

return;

}

StringBuilder sb = new StringBuilder();

sb.append(" /** 取值:");

sb.append(introspectedColumn.getRemarks());

sb.append(" */");

method.addJavaDocLine(sb.toString());

}

public void addSetterComment(Method method, IntrospectedTable introspectedTable,

IntrospectedColumn introspectedColumn) {

if (this.suppressAllComments) {

return;

}

StringBuilder sb = new StringBuilder();

sb.append(" /** 赋值:");

sb.append(introspectedColumn.getRemarks());

sb.append(" */");

method.addJavaDocLine(sb.toString());

}

public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable, boolean markAsDoNotDelete) {

if (this.suppressAllComments) {

}

}

@Override

public void addModelClassComment(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {

// TODO Auto-generated method stub

}

}

2、修改MyBatisGenerator.java (解决多次执行同一个xml,生成重复代码的问题);

主要修改两个方法:

writeGeneratedJavaFile(GeneratedJavaFile gjf, ProgressCallback callback)

和writeGeneratedXmlFile(GeneratedXmlFile gxf, ProgressCallback callback)

修改后的代码如下:

private void writeGeneratedJavaFile(GeneratedJavaFile gjf, ProgressCallback callback)

throws InterruptedException, IOException {

File targetFile;

String source;

try {

File directory = shellCallback.getDirectory(gjf

.getTargetProject(), gjf.getTargetPackage());

targetFile = new File(directory, gjf.getFileName());

if (targetFile.exists()) {

source = gjf.getFormattedContent();

} else {

source = gjf.getFormattedContent();

}

callback.checkCancel();

callback.startTask(getString(

"Progress.15", targetFile.getName())); //$NON-NLS-1$

writeFile(targetFile, source, gjf.getFileEncoding());

} catch (ShellException e) {

warnings.add(e.getMessage());

}

}

private void writeGeneratedXmlFile(GeneratedXmlFile gxf, ProgressCallback callback)

throws InterruptedException, IOException {

File targetFile;

String source;

try {

File directory = shellCallback.getDirectory(gxf

.getTargetProject(), gxf.getTargetPackage());

targetFile = new File(directory, gxf.getFileName());

if (targetFile.exists()) {

source = gxf.getFormattedContent();

} else {

source = gxf.getFormattedContent();

}

callback.checkCancel();

callback.startTask(getString(

"Progress.15", targetFile.getName())); //$NON-NLS-1$

writeFile(targetFile, source, "UTF-8"); //$NON-NLS-1$

} catch (ShellException e) {

warnings.add(e.getMessage());

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: