MyBatis Generator 生成数据库自带中文注释
1. maven依赖
- <!-- mybatis生成 jar包 -->
- <dependency>
- <groupId>org.mybatis.generator</groupId>
- <artifactId>mybatis-generator-core</artifactId>
- <version>1.3.2</version>
- </dependency>
- <!-- oracle jar包 -->
- <dependency>
- <groupId>com.oracle</groupId>
- <artifactId>ojdbc6</artifactId>
- <version>6.0</version>
- </dependency>
- <!-- mysql jar包 -->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>5.1.9</version>
- </dependency>
2. 自定义的CommentGenerator类
- package org.mybatis.generator;
- 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.xml.XmlElement;
- import org.mybatis.generator.config.MergeConstants;
- import org.mybatis.generator.config.PropertyRegistry;
- /**
- * @作者:wangbing
- * @修改记录:
- */
- public class MyCommentGenerator implements CommentGenerator{
- private Properties properties;
- private Properties systemPro;
- private boolean suppressDate;
- private boolean suppressAllComments;
- private String currentDateStr;
- public MyCommentGenerator() {
- super();
- properties = new Properties();
- systemPro = System.getProperties();
- suppressDate = false;
- suppressAllComments = false;
- currentDateStr = (new SimpleDateFormat("yyyy-MM-dd")).format(new Date());
- }
- public void addJavaFileComment(CompilationUnit compilationUnit) {
- // add no file level comments by default
- return;
- }
- /**
- * Adds a suitable comment to warn users that the element was generated, and
- * when it was generated.
- */
- public void addComment(XmlElement xmlElement) {
- return;
- }
- public void addRootComment(XmlElement rootElement) {
- // add no document level comments by default
- return;
- }
- 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));
- }
- /**
- * 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
- */
- protected void addJavadocTag(JavaElement javaElement, boolean markAsDoNotDelete) {
- javaElement.addJavaDocLine(" *");
- StringBuilder sb = new StringBuilder();
- sb.append(" * ");
- sb.append(MergeConstants.NEW_ELEMENT_TAG);
- if (markAsDoNotDelete) {
- sb.append(" do_not_delete_during_merge");
- }
- 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() {
- String result = null;
- if (!suppressDate) {
- result = currentDateStr;
- }
- return result;
- }
- public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable) {
- if (suppressAllComments) {
- return;
- }
- StringBuilder sb = new StringBuilder();
- innerClass.addJavaDocLine("/**");
- sb.append(" * ");
- sb.append(introspectedTable.getFullyQualifiedTable());
- sb.append(" ");
- sb.append(getDateString());
- innerClass.addJavaDocLine(sb.toString().replace("\n", " "));
- innerClass.addJavaDocLine(" */");
- }
- public void addEnumComment(InnerEnum innerEnum, IntrospectedTable introspectedTable) {
- if (suppressAllComments) {
- return;
- }
- StringBuilder sb = new StringBuilder();
- innerEnum.addJavaDocLine("/**");
- sb.append(" * ");
- sb.append(introspectedTable.getFullyQualifiedTable());
- innerEnum.addJavaDocLine(sb.toString().replace("\n", " "));
- innerEnum.addJavaDocLine(" */");
- }
- public void addFieldComment(Field field, IntrospectedTable introspectedTable,
- IntrospectedColumn introspectedColumn) {
- if (suppressAllComments) {
- return;
- }
- StringBuilder sb = new StringBuilder();
- field.addJavaDocLine("/**");
- sb.append(" * ");
- sb.append(introspectedColumn.getRemarks());
- field.addJavaDocLine(sb.toString().replace("\n", " "));
- field.addJavaDocLine(" */");
- }
- public void addFieldComment(Field field, IntrospectedTable introspectedTable) {
- if (suppressAllComments) {
- return;
- }
- StringBuilder sb = new StringBuilder();
- field.addJavaDocLine("/**");
- sb.append(" * ");
- sb.append(introspectedTable.getFullyQualifiedTable());
- field.addJavaDocLine(sb.toString().replace("\n", " "));
- field.addJavaDocLine(" */");
- }
- public void addGeneralMethodComment(Method method, IntrospectedTable introspectedTable) {
- if (suppressAllComments) {
- return;
- }
- method.addJavaDocLine("/**");
- addJavadocTag(method, false);
- method.addJavaDocLine(" */");
- }
- public void addGetterComment(Method method, IntrospectedTable introspectedTable,
- IntrospectedColumn introspectedColumn) {
- if (suppressAllComments) {
- return;
- }
- method.addJavaDocLine("/**");
- StringBuilder sb = new StringBuilder();
- sb.append(" * ");
- sb.append(introspectedColumn.getRemarks());
- method.addJavaDocLine(sb.toString().replace("\n", " "));
- sb.setLength(0);
- sb.append(" * @return ");
- sb.append(introspectedColumn.getActualColumnName());
- sb.append(" ");
- sb.append(introspectedColumn.getRemarks());
- method.addJavaDocLine(sb.toString().replace("\n", " "));
- method.addJavaDocLine(" */");
- }
- public void addSetterComment(Method method, IntrospectedTable introspectedTable,
- IntrospectedColumn introspectedColumn) {
- if (suppressAllComments) {
- return;
- }
- method.addJavaDocLine("/**");
- StringBuilder sb = new StringBuilder();
- sb.append(" * ");
- sb.append(introspectedColumn.getRemarks());
- method.addJavaDocLine(sb.toString().replace("\n", " "));
- Parameter parm = method.getParameters().get(0);
- sb.setLength(0);
- sb.append(" * @param ");
- sb.append(parm.getName());
- sb.append(" ");
- sb.append(introspectedColumn.getRemarks());
- method.addJavaDocLine(sb.toString().replace("\n", " "));
- method.addJavaDocLine(" */");
- }
- public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable, boolean markAsDoNotDelete) {
- if (suppressAllComments) {
- return;
- }
- StringBuilder sb = new StringBuilder();
- innerClass.addJavaDocLine("/**");
- sb.append(" * ");
- sb.append(introspectedTable.getFullyQualifiedTable());
- innerClass.addJavaDocLine(sb.toString().replace("\n", " "));
- sb.setLength(0);
- sb.append(" * @author ");
- sb.append(systemPro.getProperty("user.name"));
- sb.append(" ");
- sb.append(currentDateStr);
- innerClass.addJavaDocLine(" */");
- }
- }
- 生成注释相关类
MyCommentGenerator
3. 入口,执行类文
- package org.mybatis.generator;
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.URISyntaxException;
- import java.sql.SQLException;
- import java.util.ArrayList;
- import java.util.List;
- import org.mybatis.generator.api.MyBatisGenerator;
- import org.mybatis.generator.config.Configuration;
- import org.mybatis.generator.config.xml.ConfigurationParser;
- import org.mybatis.generator.exception.InvalidConfigurationException;
- import org.mybatis.generator.exception.XMLParserException;
- import org.mybatis.generator.internal.DefaultShellCallback;
- /**
- * @作者:wangbing
- */
- public class StartUp {
- public static void main(String[] args) throws URISyntaxException {
- try {
- List<String> warnings = new ArrayList<String>();
- boolean overwrite = true;
- ClassLoader classloader = Thread.currentThread().getContextClassLoader();
- InputStream is = classloader.getResourceAsStream("generatorConfig.xml");
- ConfigurationParser cp = new ConfigurationParser(warnings);
- Configuration config = cp.parseConfiguration(is);
- DefaultShellCallback callback = new DefaultShellCallback(overwrite);
- MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
- myBatisGenerator.generate(null);
- } catch (SQLException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (InterruptedException e) {
- e.printStackTrace();
- } catch (InvalidConfigurationException e) {
- e.printStackTrace();
- } catch (XMLParserException e) {
- e.printStackTrace();
- }
- }
- }
- main方法,执行入口
Generator启动类
4. 配置generatorConfig.xml配置文件
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE generatorConfiguration
- PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
- "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
- <generatorConfiguration>
- <context id="DB2Tables" targetRuntime="MyBatis3">
- <commentGenerator type="com.wormpex.study.mybatisgenerator.MyCommentGenerator">
- <!--<property name="suppressDate" value="true"/>
- <property name="suppressAllComments" value="true"/>-->
- </commentGenerator>
- <!--数据库链接地址账号密码-->
- <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://10.255.207.84:33006/team8" userId="dev" password="21758e78331b20e4">
- </jdbcConnection>
- <javaTypeResolver>
- <property name="forceBigDecimals" value="false"/>
- </javaTypeResolver>
- <!--生成Model类存放位置-->
- <javaModelGenerator targetPackage="com.wormpex.study.entity" targetProject="src/main/java">
- <property name="enableSubPackages" value="true"/>
- <property name="trimStrings" value="true"/>
- </javaModelGenerator>
- <!--生成映射文件存放位置-->
- <sqlMapGenerator targetPackage="com.wormpex.study.mapper" targetProject="src/main/java">
- <property name="enableSubPackages" value="true"/>
- </sqlMapGenerator>
- <!--生成Dao类存放位置-->
- <!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码
- type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象
- type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象
- type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口
- -->
- <javaClientGenerator type="XMLMAPPER" targetPackage="com.wormpex.study.dao" targetProject="src/main/java">
- <property name="enableSubPackages" value="true"/>
- </javaClientGenerator>
- <!--生成对应表及类名-->
- <table tableName="product" domainObjectName="product" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
- </context>
- </generatorConfiguration>
generatorConfig.xml
MyBatis Generator 生成数据库自带中文注释的更多相关文章
- Mybatis Generator生成数据库自带的中文注释
1.相关jar包 <!-- mybatis生成 jar包 --> <dependency> <groupId>org.mybatis.generator</g ...
- 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 的时候,生成的类都是没有序列化的. 还以为要手工加入(開始是手工加入的),今天遇到分页的问题,才发现生成的时候能够加入插件. 既然分页能够有插件.序列化是 ...
- spring boot+mybatis+generator生成domain大小写问题
之前遇到一个问题,用generator生成数据库对应的domain,以前都是好好的,那天突然生成的domain都是小写的,因为我数据库里是大写的,后来找到解决办法, <table tableNa ...
- 利用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类
将org.mybatis.generator.interal.DefaultCommentGenerator类的addFieldComment方法重写,代码如下: public void addFie ...
随机推荐
- ElasticSearch(六)底层索引控制
相似度算法 涉及到了ES的底层,首先讲一下ES的底层核心,相似度模型,ES的查询和传统的数据库查询最大的差别就在相似度查询(之前讲过,索引存储的最大差别就是讲非结构化数据转化为结构化),ES里面会给文 ...
- Jmeter性能监测及安装插件(推荐)
本文部分理论转自Jmeter官网:https://jmeter-plugins.org/wiki/PerfMon/ ,并结合个人实践编写 一.介绍 在负载测试期间,了解加载服务器的运行状况很重要.如 ...
- phpmailer使用qq邮箱、163邮箱成功发送邮件实例代码
以前使用qq邮箱.163服务器发送邮件,帐号直接使用密码,现在不行了,得使用授权码,简单记录下 1.首先开通POP3/SMTP服务,qq邮箱——帐号——设置,找到POP3/SMTP点开启,输入短信会有 ...
- Jumpserver 介绍
安装jumperserver Sudo yum install –y git Su root Cd /usr/local Mkdir jumpserver 安装等依赖包 yum -y install ...
- [1] 注解(Annotation)-- 深入理解Java:注解(Annotation)基本概念
转载 http://www.cnblogs.com/peida/archive/2013/04/23/3036035.html 深入理解Java:注解(Annotation)基本概念 什么是注解(An ...
- Ubuntu PPA软件源
PPA,其英文全称为 Personal Package Archives,即个人软件包档案.是 Ubuntu Launchpad 网站提供的一项源服务,允许个人用户上传软件源代码,通过 Launchp ...
- String[]字符串数组,按字典顺序排列大小
package ltb6w1; public class WordSort1 { private String[] a= {"hello","world",&q ...
- VUEX 学习
语法 翻译 功能介绍 module(模块)extend(扩展)extract(提取)export(输出)router(路由器)components(组件) store(储存)state (声明. ...
- mysql 事务学习
1.事务 逻辑上的一组操作,组成这组操作的各个逻辑单元要么一起成功,要么一起失败. 2.事务特性 原子性:强调事务的不可分割.一致性:强调的是事务的执行的前后,数据的完整性要保持一致.隔离性:一个事务 ...
- 用windows自带的ftp.exe实现断点续传的方法
摘自http://www.jb51.net/article/10604.htm 动画下载地址: http://www.chinesehack.org/soft/book/goonftp-jc.rar ...