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());
}
}
现在以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());
}
}
相关文章推荐
- Mybatis Generator的model生成中文注释,支持oracle和mysql(通过实现CommentGenerator接口的方法来实现)
- Intellij IDEA 2016学习系列之(三)修改mybatis-generator源码生成中文注释
- Mybatis Generator生成数据库自带的中文注释
- 通过继承DefaultCommentGenerator的方式来设置mybatis自定义代码生成器中生成实体类的中文注释
- mybatis generator 生成中文注释
- mybatis generator 生成 实体类 中文注释
- mybatis-generator-1.3.2生成数据库的中文注释
- Mybatis Generator的model生成中文注释,支持oracle和mysql(通过修改源码的方式来实现)
- mybatis-generator 自动生成带中文注释方法(附实体类)
- Mybatis Generator的model生成中文注释,支持oracle和mysql(通过实现CommentGenerator接口的方法来实现)
- mybatis-generator-core自动生成代码,支持生成中文注释、支持分页、提供BaseDao封装
- PowerDesigner生成数据库时的列中文注释乱码问题[mysql]
- middlegenide的生成文件中文注释小问题修改
- 解决mybatis-generator-core 中数据库字段注释remarks读不出来的问题
- mybatis-generator生成通用mapper中文乱码解决
- Mybatis Generator生成问题
- mybatis generator生成乱码问题
- 关于mybatis-generator中文注释 乱码解决
- Mybatis Generator 自动生成代码和常见的问题
- 2016.7.12 去除mybatis-generator生成的class里的注释