1. maven依赖

  1. <!-- mybatis生成 jar包 -->
  2. <dependency>
  3. <groupId>org.mybatis.generator</groupId>
  4. <artifactId>mybatis-generator-core</artifactId>
  5. <version>1.3.2</version>
  6. </dependency>
  7. <!-- oracle jar包 -->
  8. <dependency>
  9. <groupId>com.oracle</groupId>
  10. <artifactId>ojdbc6</artifactId>
  11. <version>6.0</version>
  12. </dependency>
  13. <!-- mysql jar包 -->
  14. <dependency>
  15. <groupId>mysql</groupId>
  16. <artifactId>mysql-connector-java</artifactId>
  17. <version>5.1.9</version>
  18. </dependency>

2. 自定义的CommentGenerator类

  1. package org.mybatis.generator;
  2.  
  3. import static org.mybatis.generator.internal.util.StringUtility.isTrue;
  4.  
  5. import java.text.SimpleDateFormat;
  6. import java.util.Date;
  7. import java.util.Properties;
  8.  
  9. import org.mybatis.generator.api.CommentGenerator;
  10. import org.mybatis.generator.api.IntrospectedColumn;
  11. import org.mybatis.generator.api.IntrospectedTable;
  12. import org.mybatis.generator.api.dom.java.CompilationUnit;
  13. import org.mybatis.generator.api.dom.java.Field;
  14. import org.mybatis.generator.api.dom.java.InnerClass;
  15. import org.mybatis.generator.api.dom.java.InnerEnum;
  16. import org.mybatis.generator.api.dom.java.JavaElement;
  17. import org.mybatis.generator.api.dom.java.Method;
  18. import org.mybatis.generator.api.dom.java.Parameter;
  19. import org.mybatis.generator.api.dom.xml.XmlElement;
  20. import org.mybatis.generator.config.MergeConstants;
  21. import org.mybatis.generator.config.PropertyRegistry;
  22.  
  23. /**
  24. * @作者:wangbing
  25. * @修改记录:
  26. */
  27. public class MyCommentGenerator implements CommentGenerator{
  28. private Properties properties;
  29. private Properties systemPro;
  30. private boolean suppressDate;
  31. private boolean suppressAllComments;
  32. private String currentDateStr;
  33.  
  34. public MyCommentGenerator() {
  35. super();
  36. properties = new Properties();
  37. systemPro = System.getProperties();
  38. suppressDate = false;
  39. suppressAllComments = false;
  40. currentDateStr = (new SimpleDateFormat("yyyy-MM-dd")).format(new Date());
  41. }
  42.  
  43. public void addJavaFileComment(CompilationUnit compilationUnit) {
  44. // add no file level comments by default
  45. return;
  46. }
  47.  
  48. /**
  49. * Adds a suitable comment to warn users that the element was generated, and
  50. * when it was generated.
  51. */
  52. public void addComment(XmlElement xmlElement) {
  53. return;
  54. }
  55.  
  56. public void addRootComment(XmlElement rootElement) {
  57. // add no document level comments by default
  58. return;
  59. }
  60.  
  61. public void addConfigurationProperties(Properties properties) {
  62. this.properties.putAll(properties);
  63.  
  64. suppressDate = isTrue(properties.getProperty(PropertyRegistry.COMMENT_GENERATOR_SUPPRESS_DATE));
  65.  
  66. suppressAllComments = isTrue(properties.getProperty(PropertyRegistry.COMMENT_GENERATOR_SUPPRESS_ALL_COMMENTS));
  67. }
  68.  
  69. /**
  70. * This method adds the custom javadoc tag for. You may do nothing if you do
  71. * not wish to include the Javadoc tag - however, if you do not include the
  72. * Javadoc tag then the Java merge capability of the eclipse plugin will
  73. * break.
  74. *
  75. * @param javaElement
  76. * the java element
  77. */
  78. protected void addJavadocTag(JavaElement javaElement, boolean markAsDoNotDelete) {
  79. javaElement.addJavaDocLine(" *");
  80. StringBuilder sb = new StringBuilder();
  81. sb.append(" * ");
  82. sb.append(MergeConstants.NEW_ELEMENT_TAG);
  83. if (markAsDoNotDelete) {
  84. sb.append(" do_not_delete_during_merge");
  85. }
  86. String s = getDateString();
  87. if (s != null) {
  88. sb.append(' ');
  89. sb.append(s);
  90. }
  91. javaElement.addJavaDocLine(sb.toString());
  92. }
  93.  
  94. /**
  95. * This method returns a formated date string to include in the Javadoc tag
  96. * and XML comments. You may return null if you do not want the date in
  97. * these documentation elements.
  98. *
  99. * @return a string representing the current timestamp, or null
  100. */
  101. protected String getDateString() {
  102. String result = null;
  103. if (!suppressDate) {
  104. result = currentDateStr;
  105. }
  106. return result;
  107. }
  108.  
  109. public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable) {
  110. if (suppressAllComments) {
  111. return;
  112. }
  113. StringBuilder sb = new StringBuilder();
  114. innerClass.addJavaDocLine("/**");
  115. sb.append(" * ");
  116. sb.append(introspectedTable.getFullyQualifiedTable());
  117. sb.append(" ");
  118. sb.append(getDateString());
  119. innerClass.addJavaDocLine(sb.toString().replace("\n", " "));
  120. innerClass.addJavaDocLine(" */");
  121. }
  122.  
  123. public void addEnumComment(InnerEnum innerEnum, IntrospectedTable introspectedTable) {
  124. if (suppressAllComments) {
  125. return;
  126. }
  127. StringBuilder sb = new StringBuilder();
  128. innerEnum.addJavaDocLine("/**");
  129. sb.append(" * ");
  130. sb.append(introspectedTable.getFullyQualifiedTable());
  131. innerEnum.addJavaDocLine(sb.toString().replace("\n", " "));
  132. innerEnum.addJavaDocLine(" */");
  133. }
  134.  
  135. public void addFieldComment(Field field, IntrospectedTable introspectedTable,
  136. IntrospectedColumn introspectedColumn) {
  137. if (suppressAllComments) {
  138. return;
  139. }
  140. StringBuilder sb = new StringBuilder();
  141. field.addJavaDocLine("/**");
  142. sb.append(" * ");
  143. sb.append(introspectedColumn.getRemarks());
  144. field.addJavaDocLine(sb.toString().replace("\n", " "));
  145. field.addJavaDocLine(" */");
  146. }
  147.  
  148. public void addFieldComment(Field field, IntrospectedTable introspectedTable) {
  149. if (suppressAllComments) {
  150. return;
  151. }
  152. StringBuilder sb = new StringBuilder();
  153. field.addJavaDocLine("/**");
  154. sb.append(" * ");
  155. sb.append(introspectedTable.getFullyQualifiedTable());
  156. field.addJavaDocLine(sb.toString().replace("\n", " "));
  157. field.addJavaDocLine(" */");
  158. }
  159.  
  160. public void addGeneralMethodComment(Method method, IntrospectedTable introspectedTable) {
  161. if (suppressAllComments) {
  162. return;
  163. }
  164. method.addJavaDocLine("/**");
  165. addJavadocTag(method, false);
  166. method.addJavaDocLine(" */");
  167. }
  168.  
  169. public void addGetterComment(Method method, IntrospectedTable introspectedTable,
  170. IntrospectedColumn introspectedColumn) {
  171. if (suppressAllComments) {
  172. return;
  173. }
  174. method.addJavaDocLine("/**");
  175. StringBuilder sb = new StringBuilder();
  176. sb.append(" * ");
  177. sb.append(introspectedColumn.getRemarks());
  178. method.addJavaDocLine(sb.toString().replace("\n", " "));
  179. sb.setLength(0);
  180. sb.append(" * @return ");
  181. sb.append(introspectedColumn.getActualColumnName());
  182. sb.append(" ");
  183. sb.append(introspectedColumn.getRemarks());
  184. method.addJavaDocLine(sb.toString().replace("\n", " "));
  185. method.addJavaDocLine(" */");
  186. }
  187.  
  188. public void addSetterComment(Method method, IntrospectedTable introspectedTable,
  189. IntrospectedColumn introspectedColumn) {
  190. if (suppressAllComments) {
  191. return;
  192. }
  193. method.addJavaDocLine("/**");
  194. StringBuilder sb = new StringBuilder();
  195. sb.append(" * ");
  196. sb.append(introspectedColumn.getRemarks());
  197. method.addJavaDocLine(sb.toString().replace("\n", " "));
  198. Parameter parm = method.getParameters().get(0);
  199. sb.setLength(0);
  200. sb.append(" * @param ");
  201. sb.append(parm.getName());
  202. sb.append(" ");
  203. sb.append(introspectedColumn.getRemarks());
  204. method.addJavaDocLine(sb.toString().replace("\n", " "));
  205. method.addJavaDocLine(" */");
  206. }
  207.  
  208. public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable, boolean markAsDoNotDelete) {
  209. if (suppressAllComments) {
  210. return;
  211. }
  212. StringBuilder sb = new StringBuilder();
  213. innerClass.addJavaDocLine("/**");
  214. sb.append(" * ");
  215. sb.append(introspectedTable.getFullyQualifiedTable());
  216. innerClass.addJavaDocLine(sb.toString().replace("\n", " "));
  217. sb.setLength(0);
  218. sb.append(" * @author ");
  219. sb.append(systemPro.getProperty("user.name"));
  220. sb.append(" ");
  221. sb.append(currentDateStr);
  222. innerClass.addJavaDocLine(" */");
  223. }
  224. }
  225.  
  226. 生成注释相关类

MyCommentGenerator

3. 入口,执行类文

  1. package org.mybatis.generator;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.net.URISyntaxException;
  6. import java.sql.SQLException;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9.  
  10. import org.mybatis.generator.api.MyBatisGenerator;
  11. import org.mybatis.generator.config.Configuration;
  12. import org.mybatis.generator.config.xml.ConfigurationParser;
  13. import org.mybatis.generator.exception.InvalidConfigurationException;
  14. import org.mybatis.generator.exception.XMLParserException;
  15. import org.mybatis.generator.internal.DefaultShellCallback;
  16.  
  17. /**
  18. * @作者:wangbing
  19. */
  20. public class StartUp {
  21. public static void main(String[] args) throws URISyntaxException {
  22. try {
  23. List<String> warnings = new ArrayList<String>();
  24. boolean overwrite = true;
  25. ClassLoader classloader = Thread.currentThread().getContextClassLoader();
  26. InputStream is = classloader.getResourceAsStream("generatorConfig.xml");
  27. ConfigurationParser cp = new ConfigurationParser(warnings);
  28. Configuration config = cp.parseConfiguration(is);
  29. DefaultShellCallback callback = new DefaultShellCallback(overwrite);
  30. MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
  31. myBatisGenerator.generate(null);
  32. } catch (SQLException e) {
  33. e.printStackTrace();
  34. } catch (IOException e) {
  35. e.printStackTrace();
  36. } catch (InterruptedException e) {
  37. e.printStackTrace();
  38. } catch (InvalidConfigurationException e) {
  39. e.printStackTrace();
  40. } catch (XMLParserException e) {
  41. e.printStackTrace();
  42. }
  43. }
  44. }
  45.  
  46. main方法,执行入口

Generator启动类

4. 配置generatorConfig.xml配置文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE generatorConfiguration
  3. PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  4. "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
  5. <generatorConfiguration>
  6.  
  7. <context id="DB2Tables" targetRuntime="MyBatis3">
  8. <commentGenerator type="com.wormpex.study.mybatisgenerator.MyCommentGenerator">
  9. <!--<property name="suppressDate" value="true"/>
  10. <property name="suppressAllComments" value="true"/>-->
  11. </commentGenerator>
  12. <!--数据库链接地址账号密码-->
  13. <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://10.255.207.84:33006/team8" userId="dev" password="21758e78331b20e4">
  14. </jdbcConnection>
  15. <javaTypeResolver>
  16. <property name="forceBigDecimals" value="false"/>
  17. </javaTypeResolver>
  18. <!--生成Model类存放位置-->
  19. <javaModelGenerator targetPackage="com.wormpex.study.entity" targetProject="src/main/java">
  20. <property name="enableSubPackages" value="true"/>
  21. <property name="trimStrings" value="true"/>
  22. </javaModelGenerator>
  23. <!--生成映射文件存放位置-->
  24. <sqlMapGenerator targetPackage="com.wormpex.study.mapper" targetProject="src/main/java">
  25. <property name="enableSubPackages" value="true"/>
  26. </sqlMapGenerator>
  27. <!--生成Dao类存放位置-->
  28. <!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码
  29. type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象
  30. type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象
  31. type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口
  32. -->
  33. <javaClientGenerator type="XMLMAPPER" targetPackage="com.wormpex.study.dao" targetProject="src/main/java">
  34. <property name="enableSubPackages" value="true"/>
  35. </javaClientGenerator>
  36. <!--生成对应表及类名-->
  37. <table tableName="product" domainObjectName="product" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
  38. </context>
  39. </generatorConfiguration>

generatorConfig.xml

MyBatis Generator 生成数据库自带中文注释的更多相关文章

  1. Mybatis Generator生成数据库自带的中文注释

    1.相关jar包 <!-- mybatis生成 jar包 --> <dependency> <groupId>org.mybatis.generator</g ...

  2. Maven下用MyBatis Generator生成文件

    使用Maven命令用MyBatis Generator生成MyBatis的文件步骤如下: 1.在mop文件内添加plugin <build> <finalName>KenShr ...

  3. 【记录】Mybatis Generator生成数据对象Date/TimeStamp 查询时间格式化

    Mybatis Generator是很好的工具帮助我们生成表映射关联代码,最近博主遇到一个问题,找了很久才解决, 就是用Mybatis Generator生成实体类的时候,Date 时间无法格式化输出 ...

  4. mybatis Generator生成代码及使用方式

    本文原创,转载请注明:http://www.cnblogs.com/fengzheng/p/5889312.html 为什么要有mybatis mybatis 是一个 Java 的 ORM 框架,OR ...

  5. MyBatis Generator生成DAO——序列化

    MyBatis Generator生成DAO 的时候,生成的类都是没有序列化的. 还以为要手工加入(開始是手工加入的),今天遇到分页的问题,才发现生成的时候能够加入插件. 既然分页能够有插件.序列化是 ...

  6. spring boot+mybatis+generator生成domain大小写问题

    之前遇到一个问题,用generator生成数据库对应的domain,以前都是好好的,那天突然生成的domain都是小写的,因为我数据库里是大写的,后来找到解决办法, <table tableNa ...

  7. 利用org.mybatis.generator生成实体类

    springboot+maven+mybatis+mysql 利用org.mybatis.generator生成实体类 1.添加pom依赖:   2.编写generatorConfig.xml文件 ( ...

  8. MyBatis Generator 生成的example 使用 and or 简单混合查询

    MyBatis Generator 生成的example 使用 and or 简单混合查询 参考博客:https://www.cnblogs.com/kangping/p/6001519.html 简 ...

  9. mybatis generator 生成带中文注释的model类

    将org.mybatis.generator.interal.DefaultCommentGenerator类的addFieldComment方法重写,代码如下: public void addFie ...

随机推荐

  1. ElasticSearch(六)底层索引控制

    相似度算法 涉及到了ES的底层,首先讲一下ES的底层核心,相似度模型,ES的查询和传统的数据库查询最大的差别就在相似度查询(之前讲过,索引存储的最大差别就是讲非结构化数据转化为结构化),ES里面会给文 ...

  2. Jmeter性能监测及安装插件(推荐)

    本文部分理论转自Jmeter官网:https://jmeter-plugins.org/wiki/PerfMon/  ,并结合个人实践编写 一.介绍 在负载测试期间,了解加载服务器的运行状况很重要.如 ...

  3. phpmailer使用qq邮箱、163邮箱成功发送邮件实例代码

    以前使用qq邮箱.163服务器发送邮件,帐号直接使用密码,现在不行了,得使用授权码,简单记录下 1.首先开通POP3/SMTP服务,qq邮箱——帐号——设置,找到POP3/SMTP点开启,输入短信会有 ...

  4. Jumpserver 介绍

    安装jumperserver Sudo yum install –y git Su root Cd  /usr/local Mkdir jumpserver 安装等依赖包 yum -y install ...

  5. [1] 注解(Annotation)-- 深入理解Java:注解(Annotation)基本概念

    转载 http://www.cnblogs.com/peida/archive/2013/04/23/3036035.html 深入理解Java:注解(Annotation)基本概念 什么是注解(An ...

  6. Ubuntu PPA软件源

    PPA,其英文全称为 Personal Package Archives,即个人软件包档案.是 Ubuntu Launchpad 网站提供的一项源服务,允许个人用户上传软件源代码,通过 Launchp ...

  7. String[]字符串数组,按字典顺序排列大小

    package ltb6w1; public class WordSort1 { private String[] a= {"hello","world",&q ...

  8. VUEX 学习

    语法   翻译  功能介绍 module(模块)extend(扩展)extract(提取)export(输出)router(路由器)components(组件) store(储存)state (声明. ...

  9. mysql 事务学习

    1.事务 逻辑上的一组操作,组成这组操作的各个逻辑单元要么一起成功,要么一起失败. 2.事务特性 原子性:强调事务的不可分割.一致性:强调的是事务的执行的前后,数据的完整性要保持一致.隔离性:一个事务 ...

  10. 用windows自带的ftp.exe实现断点续传的方法

    摘自http://www.jb51.net/article/10604.htm 动画下载地址: http://www.chinesehack.org/soft/book/goonftp-jc.rar ...