mybatis generator 生成中文注释
mybatis generator默认生成 的注释太奇葩了,完全不能拿到生产去用,不过幸亏提供了接口可以自己扩展。长话短说,要生成如下的domain,
package com.demo.domain; /** test_mybatis */
public class TestMybatis {
/** 主键 */
private Integer id; /** 字段说明 */
private String name; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.demo.TestMybatisMapper">
<resultMap id="BaseResultMap" type="com.demo.domain.TestMybatis">
<id column="id" jdbcType="INTEGER" property="id" />
<result column="name" jdbcType="VARCHAR" property="name" />
</resultMap>
<sql id="Base_Column_List">
id, name
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from test_mybatis
where id = #{id,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
delete from test_mybatis
where id = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.demo.domain.TestMybatis">
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>
insert into test_mybatis (name)
values (#{name,jdbcType=VARCHAR})
</insert>
<insert id="insertSelective" parameterType="com.demo.domain.TestMybatis">
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>
insert into test_mybatis
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="name != null">
name,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="name != null">
#{name,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.demo.domain.TestMybatis">
update test_mybatis
<set>
<if test="name != null">
name = #{name,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.demo.domain.TestMybatis">
update test_mybatis
set name = #{name,jdbcType=VARCHAR}
where id = #{id,jdbcType=INTEGER}
</update>
</mapper>
同时mapper.xml中也不要注释,可通过更改org.mybatis.generator.internal.DefaultCommentGenerator,并重新编译实现,如下:
/**
* Copyright 2006-2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.mybatis.generator.internal; import static org.mybatis.generator.internal.util.StringUtility.isTrue; import java.text.SimpleDateFormat;
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.Parameter;
import org.mybatis.generator.api.dom.java.TopLevelClass;
import org.mybatis.generator.api.dom.xml.TextElement;
import org.mybatis.generator.api.dom.xml.XmlElement;
import org.mybatis.generator.config.MergeConstants;
import org.mybatis.generator.config.PropertyRegistry;
import org.mybatis.generator.internal.util.StringUtility; /**
* The Class DefaultCommentGenerator.
*
* @author Jeff Butler
*/
public class DefaultCommentGenerator implements CommentGenerator { /** The properties. */
private Properties properties; /** The suppress date. */
private boolean suppressDate; /** The suppress all comments. */
private boolean suppressAllComments; /** The addition of table remark's comments.
* If suppressAllComments is true, this option is ignored*/
private boolean addRemarkComments; private SimpleDateFormat dateFormat; /**
* Instantiates a new default comment generator.
*/
public DefaultCommentGenerator() {
super();
properties = new Properties();
suppressDate = false;
suppressAllComments = false;
addRemarkComments = false;
} /* (non-Javadoc)
* @see org.mybatis.generator.api.CommentGenerator#addJavaFileComment(org.mybatis.generator.api.dom.java.CompilationUnit)
*/
public void addJavaFileComment(CompilationUnit compilationUnit) {
// add no file level comments by default
} /**
* Adds a suitable comment to warn users that the element was generated, and when it was generated.
*
* @param xmlElement
* the xml element
*/
public void addComment(XmlElement xmlElement) {
if (suppressAllComments) {
return;
} // xmlElement.addElement(new TextElement("<!--")); //$NON-NLS-1$
//
// StringBuilder sb = new StringBuilder();
// sb.append(" WARNING - "); //$NON-NLS-1$
// sb.append(MergeConstants.NEW_ELEMENT_TAG);
// xmlElement.addElement(new TextElement(sb.toString()));
// xmlElement
// .addElement(new TextElement(
// " This element is automatically generated by MyBatis Generator, do not modify.")); //$NON-NLS-1$
//
// String s = getDateString();
// if (s != null) {
// sb.setLength(0);
// sb.append(" This element was generated on "); //$NON-NLS-1$
// sb.append(s);
// sb.append('.');
// xmlElement.addElement(new TextElement(sb.toString()));
// }
//
// xmlElement.addElement(new TextElement("-->")); //$NON-NLS-1$
} /* (non-Javadoc)
* @see org.mybatis.generator.api.CommentGenerator#addRootComment(org.mybatis.generator.api.dom.xml.XmlElement)
*/
public void addRootComment(XmlElement rootElement) {
// add no document level comments by default
} /* (non-Javadoc)
* @see org.mybatis.generator.api.CommentGenerator#addConfigurationProperties(java.util.Properties)
*/
public void addConfigurationProperties(Properties properties) {
this.properties.putAll(properties); suppressDate = isTrue(properties
.getProperty(PropertyRegistry.COMMENT_GENERATOR_SUPPRESS_DATE)); suppressAllComments = isTrue(properties
.getProperty(PropertyRegistry.COMMENT_GENERATOR_SUPPRESS_ALL_COMMENTS)); addRemarkComments = isTrue(properties
.getProperty(PropertyRegistry.COMMENT_GENERATOR_ADD_REMARK_COMMENTS)); String dateFormatString = properties.getProperty(PropertyRegistry.COMMENT_GENERATOR_DATE_FORMAT);
if (StringUtility.stringHasValue(dateFormatString)) {
dateFormat = new SimpleDateFormat(dateFormatString);
}
} /**
* This method adds the custom javadoc tag for. You may do nothing if you do not wish to include the Javadoc tag -
* however, if you do not include the Javadoc tag then the Java merge capability of the eclipse plugin will break.
*
* @param javaElement
* the java element
* @param markAsDoNotDelete
* the mark as do not delete
*/
protected void addJavadocTag(JavaElement javaElement,
boolean markAsDoNotDelete) {
javaElement.addJavaDocLine(" *"); //$NON-NLS-1$
StringBuilder sb = new StringBuilder();
sb.append(" * "); //$NON-NLS-1$
sb.append(MergeConstants.NEW_ELEMENT_TAG);
if (markAsDoNotDelete) {
sb.append(" do_not_delete_during_merge"); //$NON-NLS-1$
}
String s = getDateString();
if (s != null) {
sb.append(' ');
sb.append(s);
}
javaElement.addJavaDocLine(sb.toString());
} /**
* This method returns a formated date string to include in the Javadoc tag
* and XML comments. You may return null if you do not want the date in
* these documentation elements.
*
* @return a string representing the current timestamp, or null
*/
protected String getDateString() {
if (suppressDate) {
return null;
} else if (dateFormat != null) {
return dateFormat.format(new Date());
} else {
return new Date().toString();
}
} /* (non-Javadoc)
* @see org.mybatis.generator.api.CommentGenerator#addClassComment(org.mybatis.generator.api.dom.java.InnerClass, org.mybatis.generator.api.IntrospectedTable)
*/
public void addClassComment(InnerClass innerClass,
IntrospectedTable introspectedTable) {
if (suppressAllComments) {
return;
}
innerClass.addJavaDocLine("/**" + introspectedTable.getFullyQualifiedTable() + " " + introspectedTable.getRemarks() + "*/"); //$NON-NLS-1$
// StringBuilder sb = new StringBuilder();
//
// innerClass.addJavaDocLine("/**"); //$NON-NLS-1$
// innerClass
// .addJavaDocLine(" * This class was generated by MyBatis Generator."); //$NON-NLS-1$
//
// sb.append(" * This class corresponds to the database table "); //$NON-NLS-1$
// sb.append(introspectedTable.getFullyQualifiedTable());
// innerClass.addJavaDocLine(sb.toString());
//
// addJavadocTag(innerClass, false);
//
// innerClass.addJavaDocLine(" */"); //$NON-NLS-1$
} /* (non-Javadoc)
* @see org.mybatis.generator.api.CommentGenerator#addTopLevelClassComment(org.mybatis.generator.api.dom.java.TopLevelClass, org.mybatis.generator.api.IntrospectedTable)
*/
@Override
public void addModelClassComment(TopLevelClass topLevelClass,
IntrospectedTable introspectedTable) {
if (suppressAllComments || !addRemarkComments) {
return;
}
topLevelClass.addJavaDocLine("/** " + introspectedTable.getFullyQualifiedTable() + " " + introspectedTable.getRemarks() + " */"); //$NON-NLS-1$
// StringBuilder sb = new StringBuilder();
//
// topLevelClass.addJavaDocLine("/**"); //$NON-NLS-1$
//
// String remarks = introspectedTable.getRemarks();
// if (addRemarkComments && StringUtility.stringHasValue(remarks)) {
// topLevelClass.addJavaDocLine(" * Database Table Remarks:");
// String[] remarkLines = remarks.split(System.getProperty("line.separator")); //$NON-NLS-1$
// for (String remarkLine : remarkLines) {
// topLevelClass.addJavaDocLine(" * " + remarkLine); //$NON-NLS-1$
// }
// }
// topLevelClass.addJavaDocLine(" *"); //$NON-NLS-1$
//
// topLevelClass
// .addJavaDocLine(" * This class was generated by MyBatis Generator."); //$NON-NLS-1$
//
// sb.append(" * This class corresponds to the database table "); //$NON-NLS-1$
// sb.append(introspectedTable.getFullyQualifiedTable());
// topLevelClass.addJavaDocLine(sb.toString());
//
// addJavadocTag(topLevelClass, true);
//
// topLevelClass.addJavaDocLine(" */"); //$NON-NLS-1$
} /* (non-Javadoc)
* @see org.mybatis.generator.api.CommentGenerator#addEnumComment(org.mybatis.generator.api.dom.java.InnerEnum, org.mybatis.generator.api.IntrospectedTable)
*/
public void addEnumComment(InnerEnum innerEnum,
IntrospectedTable introspectedTable) {
if (suppressAllComments) {
return;
} StringBuilder sb = new StringBuilder(); innerEnum.addJavaDocLine("/**"); //$NON-NLS-1$
innerEnum
.addJavaDocLine(" * This enum was generated by MyBatis Generator."); //$NON-NLS-1$ sb.append(" * This enum corresponds to the database table "); //$NON-NLS-1$
sb.append(introspectedTable.getFullyQualifiedTable());
innerEnum.addJavaDocLine(sb.toString()); addJavadocTag(innerEnum, false); innerEnum.addJavaDocLine(" */"); //$NON-NLS-1$
} /* (non-Javadoc)
* @see org.mybatis.generator.api.CommentGenerator#addFieldComment(org.mybatis.generator.api.dom.java.Field, org.mybatis.generator.api.IntrospectedTable, org.mybatis.generator.api.IntrospectedColumn)
*/
public void addFieldComment(Field field,
IntrospectedTable introspectedTable,
IntrospectedColumn introspectedColumn) {
if (suppressAllComments) {
return;
}
field.addJavaDocLine("/** "+introspectedColumn.getRemarks()+" */");
// field.addJavaDocLine("/**"); //$NON-NLS-1$
//
// String remarks = introspectedColumn.getRemarks();
// if (addRemarkComments && StringUtility.stringHasValue(remarks)) {
// field.addJavaDocLine(" * Database Column Remarks:");
// String[] remarkLines = remarks.split(System.getProperty("line.separator")); //$NON-NLS-1$
// for (String remarkLine : remarkLines) {
// field.addJavaDocLine(" * " + remarkLine); //$NON-NLS-1$
// }
// }
//
// field.addJavaDocLine(" *"); //$NON-NLS-1$
// field
// .addJavaDocLine(" * This field was generated by MyBatis Generator."); //$NON-NLS-1$
//
// StringBuilder sb = new StringBuilder();
// sb.append(" * This field corresponds to the database column "); //$NON-NLS-1$
// sb.append(introspectedTable.getFullyQualifiedTable());
// sb.append('.');
// sb.append(introspectedColumn.getActualColumnName());
// field.addJavaDocLine(sb.toString());
//
// addJavadocTag(field, false);
//
// field.addJavaDocLine(" */"); //$NON-NLS-1$
} /* (non-Javadoc)
* @see org.mybatis.generator.api.CommentGenerator#addFieldComment(org.mybatis.generator.api.dom.java.Field, org.mybatis.generator.api.IntrospectedTable)
*/
public void addFieldComment(Field field, IntrospectedTable introspectedTable) {
if (suppressAllComments) {
return;
} StringBuilder sb = new StringBuilder(); field.addJavaDocLine("/**"); //$NON-NLS-1$
field
.addJavaDocLine(" * This field was generated by MyBatis Generator."); //$NON-NLS-1$ sb.append(" * This field corresponds to the database table "); //$NON-NLS-1$
sb.append(introspectedTable.getFullyQualifiedTable());
field.addJavaDocLine(sb.toString()); addJavadocTag(field, false); field.addJavaDocLine(" */"); //$NON-NLS-1$
} /* (non-Javadoc)
* @see org.mybatis.generator.api.CommentGenerator#addGeneralMethodComment(org.mybatis.generator.api.dom.java.Method, org.mybatis.generator.api.IntrospectedTable)
*/
public void addGeneralMethodComment(Method method,
IntrospectedTable introspectedTable) {
if (suppressAllComments) {
return;
} StringBuilder sb = new StringBuilder(); method.addJavaDocLine("/**"); //$NON-NLS-1$
method
.addJavaDocLine(" * This method was generated by MyBatis Generator."); //$NON-NLS-1$ sb.append(" * This method corresponds to the database table "); //$NON-NLS-1$
sb.append(introspectedTable.getFullyQualifiedTable());
method.addJavaDocLine(sb.toString()); addJavadocTag(method, false); method.addJavaDocLine(" */"); //$NON-NLS-1$
} /* (non-Javadoc)
* @see org.mybatis.generator.api.CommentGenerator#addGetterComment(org.mybatis.generator.api.dom.java.Method, org.mybatis.generator.api.IntrospectedTable, org.mybatis.generator.api.IntrospectedColumn)
*/
public void addGetterComment(Method method,
IntrospectedTable introspectedTable,
IntrospectedColumn introspectedColumn) {
if (suppressAllComments) {
return;
} // StringBuilder sb = new StringBuilder();
//
// method.addJavaDocLine("/**"); //$NON-NLS-1$
// method
// .addJavaDocLine(" * This method was generated by MyBatis Generator."); //$NON-NLS-1$
//
// sb.append(" * This method returns the value of the database column "); //$NON-NLS-1$
// sb.append(introspectedTable.getFullyQualifiedTable());
// sb.append('.');
// sb.append(introspectedColumn.getActualColumnName());
// method.addJavaDocLine(sb.toString());
//
// method.addJavaDocLine(" *"); //$NON-NLS-1$
//
// sb.setLength(0);
// sb.append(" * @return the value of "); //$NON-NLS-1$
// sb.append(introspectedTable.getFullyQualifiedTable());
// sb.append('.');
// sb.append(introspectedColumn.getActualColumnName());
// method.addJavaDocLine(sb.toString());
//
// addJavadocTag(method, false);
//
// method.addJavaDocLine(" */"); //$NON-NLS-1$
} /* (non-Javadoc)
* @see org.mybatis.generator.api.CommentGenerator#addSetterComment(org.mybatis.generator.api.dom.java.Method, org.mybatis.generator.api.IntrospectedTable, org.mybatis.generator.api.IntrospectedColumn)
*/
public void addSetterComment(Method method,
IntrospectedTable introspectedTable,
IntrospectedColumn introspectedColumn) {
if (suppressAllComments) {
return;
} // StringBuilder sb = new StringBuilder();
//
// method.addJavaDocLine("/**"); //$NON-NLS-1$
// method
// .addJavaDocLine(" * This method was generated by MyBatis Generator."); //$NON-NLS-1$
//
// sb.append(" * This method sets the value of the database column "); //$NON-NLS-1$
// sb.append(introspectedTable.getFullyQualifiedTable());
// sb.append('.');
// sb.append(introspectedColumn.getActualColumnName());
// method.addJavaDocLine(sb.toString());
//
// method.addJavaDocLine(" *"); //$NON-NLS-1$
//
// Parameter parm = method.getParameters().get(0);
// sb.setLength(0);
// sb.append(" * @param "); //$NON-NLS-1$
// sb.append(parm.getName());
// sb.append(" the value for "); //$NON-NLS-1$
// sb.append(introspectedTable.getFullyQualifiedTable());
// sb.append('.');
// sb.append(introspectedColumn.getActualColumnName());
// method.addJavaDocLine(sb.toString());
//
// addJavadocTag(method, false);
//
// method.addJavaDocLine(" */"); //$NON-NLS-1$
} /* (non-Javadoc)
* @see org.mybatis.generator.api.CommentGenerator#addClassComment(org.mybatis.generator.api.dom.java.InnerClass, org.mybatis.generator.api.IntrospectedTable, boolean)
*/
public void addClassComment(InnerClass innerClass,
IntrospectedTable introspectedTable, boolean markAsDoNotDelete) {
if (suppressAllComments) {
return;
}
innerClass.addJavaDocLine("/**" + introspectedTable.getFullyQualifiedTable() + " " + introspectedTable.getRemarks() + "*/"); //$NON-NLS-1$
// StringBuilder sb = new StringBuilder();
//
// innerClass.addJavaDocLine("/**"); //$NON-NLS-1$
// innerClass
// .addJavaDocLine(" * This class was generated by MyBatis Generator."); //$NON-NLS-1$
//
// sb.append(" * This class corresponds to the database table "); //$NON-NLS-1$
// sb.append(introspectedTable.getFullyQualifiedTable());
// innerClass.addJavaDocLine(sb.toString());
//
// addJavadocTag(innerClass, markAsDoNotDelete);
//
// innerClass.addJavaDocLine(" */"); //$NON-NLS-1$
}
}
重新使用maven编译,替换官方的即可。附上已经替换的版本http://pan.baidu.com/s/1hrYIrWw。
mybatis generator 生成中文注释的更多相关文章
- Mybatis Generator的model生成中文注释,支持oracle和mysql(通过实现CommentGenerator接口的方法来实现)
自己手动实现的前提,对maven项目有基本的了解,在本地成功搭建了maven环境,可以参考我之前的文章:maven环境搭建 项目里新建表时model,mapper以及mapper.xml基本都是用My ...
- Maven下用MyBatis Generator生成文件
使用Maven命令用MyBatis Generator生成MyBatis的文件步骤如下: 1.在mop文件内添加plugin <build> <finalName>KenShr ...
- 【记录】Mybatis Generator生成数据对象Date/TimeStamp 查询时间格式化
Mybatis Generator是很好的工具帮助我们生成表映射关联代码,最近博主遇到一个问题,找了很久才解决, 就是用Mybatis Generator生成实体类的时候,Date 时间无法格式化输出 ...
- mybatis Generator生成代码及使用方式
本文原创,转载请注明:http://www.cnblogs.com/fengzheng/p/5889312.html 为什么要有mybatis mybatis 是一个 Java 的 ORM 框架,OR ...
- MyBatis Generator生成DAO——序列化
MyBatis Generator生成DAO 的时候,生成的类都是没有序列化的. 还以为要手工加入(開始是手工加入的),今天遇到分页的问题,才发现生成的时候能够加入插件. 既然分页能够有插件.序列化是 ...
- 利用org.mybatis.generator生成实体类
springboot+maven+mybatis+mysql 利用org.mybatis.generator生成实体类 1.添加pom依赖: 2.编写generatorConfig.xml文件 ( ...
- MyBatis Generator 生成的example 使用 and or 简单混合查询
MyBatis Generator 生成的example 使用 and or 简单混合查询 参考博客:https://www.cnblogs.com/kangping/p/6001519.html 简 ...
- Mybatis Generator的model生成中文注释,支持oracle和mysql(通过修改源码的方式来实现)
在看本篇之前,最好先看一下上一篇通过实现CommentGenerator接口的方法来实现中文注释的例子,因为很多操作和上一篇基本是一致的,所以本篇可能不那么详细. 首先说一下上篇通过实现Comment ...
- Mybatis Generator生成数据库自带的中文注释
1.相关jar包 <!-- mybatis生成 jar包 --> <dependency> <groupId>org.mybatis.generator</g ...
随机推荐
- 合理利用配置不同的机器资源做redis cluster的server
Redis cluster可以使用不同配置的机器学习因为我们可以手动调整不同的机器所承担的slot的个数,这样内存小CPU相对少的机器应该承担更少的slots
- DataFrame修改列名
把Dataframe格式的列名'class1'修改为'class_label' data.rename(columns={"label":"true_label" ...
- zip()
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表. 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以 ...
- Serveral effective linux commands
1. 统计当前文件夹下文件个数(不包括子目录下文件): $ ls -l | grep "^-" | wc -l 2. 统计当前文件夹下文件个数(包括子目录下文件): $ ls -l ...
- iOS UI基础-12.0 Storyboard
storyboard创建控制器 1.先加载storyboard文件(Test是storyboard的文件名) UIStoryboard *storyboard = [UIStoryboard stor ...
- MVC5 您不能调用控制器“xx”上的操作方法“xx”,因为该方法是一种泛型方法
在 MVC5 中当使用 routes.MapMvcAttributeRoutes() 添加路由属性是导致在控制器创建的泛型方法调用错误: Cannot call action method 'Sy ...
- Javascript-全局函数和局部函数作用域的理解
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- linux降低内存后oracle数据库无法启动
降低了虚拟机的内存之后发现虚拟机中的oracle数据库无法startup,原因是 target memory的数据有问题,然后在安装数据库的使用的是自动内存管理.涉及的一个系统文件 /dev/shm ...
- Rpgmakermv(25) 游戏数据
随着对RMMV插件了解的深入,我们会发现如果我们想要对游戏数据进行一些扩展,首先要了解游戏数据,游戏数据在官方代码中的rpg_managers.js里,这一节我们将要对这个官方类有一些基础的了解,并且 ...
- 使用JFileChooser实现在指定文件夹下批量添加根据“数字型样式”或“非数字型样式”命令的文件夹
2018-11-05 20:57:00开始写 Folder.java类 import javax.swing.JFrame; import javax.swing.JPanel; import jav ...