mybatis-generator生成带中文注释POJO类的超详细教程含代码和图解

mybatis-generator自动生成带中文注释POJO类和增删改查,idea和eclipes都可以使用





MyCommentGenerator.java

package yao.demo.common.generator;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.*;
import org.mybatis.generator.api.dom.xml.XmlElement;
import org.mybatis.generator.config.MergeConstants;
import org.mybatis.generator.config.PropertyRegistry;import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;import static org.mybatis.generator.internal.util.StringUtility.isTrue;/*** 运行执行方法请去startUp.java执行main方法* Mybatis Generator的model生成中文注释,支持oracle和mysql(通过实现CommentGenerator接口的方法来实现)*/
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 defaultreturn;}/*** 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 defaultreturn;}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(" */");}
}

StartUp.java

package yao.demo.common.generator;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;import java.io.IOException;
import java.io.InputStream;
import java.net.URISyntaxException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;/*** Mybatis Generator的model生成中文注释以及增删改查的方法,支持oracle和mysql(通过实现CommentGenerator接口的方法来实现)*/
public class StartUp {/***  配置文件sqlMapGeneractor设置好表名和类名后执行该main方法生成带中文注释的POJO类*/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("sqlMapGeneractor.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();}}
}

文件说明教程

idea使用mybatis-generator生成增删改查及带中文注释的POJO类教程

1.将MyCommentGenerator.java和StartUp.java放到你工程所在的任意一个目录下, 可参考图1

2.将sqlMapGeneractor.xml放到resources目录下面, 并参考图2修改文件所在路径和mysql的jar包路径以及数据库地址!

3.pom.xml引入jar依赖, 可参考图3

<!-- 自动生成pojo类工具 -->
<dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.2</version>
</dependency>pom.xml的<plugins>下加入插件<!-- mybatis generator 自动生成代码插件 --><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.2</version><configuration><configurationFile>./src/main/resources/sqlMapGeneractor.xml</configurationFile><overwrite>true</overwrite><verbose>true</verbose></configuration></plugin>
  1. 等jar包下载完成后, 设置需要生成的表名和类名如:m_org, 然后执行StartUp.java的main方法就生成了需要的pojo类(code返回0成功,1失败), 参考图4.5.6

mybatis-generator生成带中文注释POJO类的超详细教程含代码和图解相关推荐

  1. PowerDesigner生成带中文注释的ER图

    PowerDesigner生成带中文注释的ER图 前言:参考资料 本文结合自己的需求和遇到问题,参考以下三篇文章,终于解决问题,谢谢三篇文章的作者! 第一篇:https://blog.csdn.net ...

  2. 使用TkMybatis逆向生成带中文注释文件,并使用其常用的方法

    首先说明,博主用的是springboot,如使用原生态的mybatis的一些配置文件请自行百度 贴上pom文件 <?xml version="1.0" encoding=&q ...

  3. mybatis generator 生成数据库注释等问题

    mybatis代码生成器生成数据库的注释,找了半天没有找到非常详细可用的,于是我打算自己整理一份,分享出来,以下是本人亲身经历的问题处理流程,实践有效. 前提:可以使用一般的mybatis gener ...

  4. mybatis oracle生成注释,MyBatis Generator生成Oracle数据库对应实体类时无法获取注释问题...

    最近在利用mybatis generator生成Oracle数据库对应的实体类时发现一个问题,特此记录下. 因为项目使用到了swagger2,所以想在生成实体类时通过表注释和字段注释生成对应的@Api ...

  5. 解决表字段使用关键字导致Mybatis Generator生成代码异常的解决方案

    From: http://blog.itfsw.com/2017/05/23/jiejue-biao-ziduan-shiyong-guanjianzi-daozhi-mybatis-generato ...

  6. SQL导出数据表格怎么让列头带中文注释

    SQL导出数据表格怎么让列头带中文注释 实现步骤: 1. 查询数据表,导出为csv文件. 2. 导出列注释信息 3.csv文件中添加中文名称行(也可代码处理) 3.1 先粘贴到任意位置,然后右键复制 ...

  7. 发那科系统梯形图实例,重点是带中文注释

    发那科系统梯形图实例,重点是带##中文注释##,看起来一目了然,浅显易懂,是学习PLC的好资料.内容还包括编制应用梯形图的流程,如何地址分配,IO分配,怎样编写,并且配有梯形图的注释,而且资料中,有常 ...

  8. 手把手带你入门前端工程化——超详细教程(高级前端必备)

    本文将分成以下 7 个小节: 技术选型 统一规范 测试 部署 监控 性能优化 重构 部分小节提供了非常详细的实战教程,让大家动手实践. 另外我还写了一个前端工程化 demo 放在 github 上.这 ...

  9. 手把手带你入门前端工程化——超详细教程

    授权自@谭光志 链接:https://segmentfault.com/a/1190000037752931,也可点击阅读原文 本文将分成以下 7 个小节: 技术选型 统一规范 测试 部署 监控 性能 ...

最新文章

  1. 更改c语言程序保存地址吗,(C语言)修改文件时间程序(创建时间、修改时间、访问时间)...
  2. 鸟哥Linux私房菜知识点总结3到5章
  3. Unity屏幕射线碰撞
  4. html修改按钮背景颜色,html鼠标悬浮在按钮上,让按钮背景变色
  5. mfc指示灯报警显示_消防水炮需要外置声光报警吗
  6. C++内存分配方式以及区别
  7. 经典题目螺旋方阵的详解
  8. 微服务架构的实施现状
  9. 将dll制作成控件_丹江口水库发现1.68米长巨型鱤鱼,将被制作成标本展出,吃货们哭了...
  10. Atitit 音频资料与音乐库管理系统功能 目录 1. 通用功能区 2 1.1. 批量处理功能文件夹遍历 2 1.2. Zip文件遍历与读取 2 1.3. Rar文件遍历与读取 2 1.4. She
  11. 备件管理系统c语言,图书管理系统的设计与开发及体育用品库存管理系统设计.doc...
  12. 傅里叶变换与时域频域关系
  13. 找不到java是什么意思_“无法找到或加载主类”是什么意思?
  14. C++实现string的spilt功能-temp
  15. vdi转vmdk VirtualBox与VMware硬盘格式转换及使用方法
  16. 模仿blblblbl登录页面
  17. OpenCV | 直线拟合fitline函数(Python)
  18. int, long, long long类型的范围
  19. python 实现 享元模式
  20. 科研中常用的计算机应用软件,研究生的日常软件(文献类软件使用介绍及心得)...

热门文章

  1. HBase 存储船舶轨迹方案
  2. Nginx配置域名转发实例
  3. php 挂机,PHP实现挂QQ,QQ挂机php代码
  4. qq挂机机制改变,换小时数为天数,挂机更漫长
  5. linux 符号执行,基于程序切片的符号执行,Symbolic execution based on program slicing,音标,读音,翻译,英文例句,英语词典...
  6. ultraiso制作linux镜像,使用UltraISO制作Ubuntu的Live-USB系统镜像
  7. 【日期时间合法性校验—C语言】
  8. netbsd apache php mysql_NetBSD2.0下架设入门级www服务器
  9. mysql sqlserver 性能优化_SQLServer性能优化之---数据库级日记监控
  10. node.js毕业设计基于微信小程序的健康管理系统(源码+程序+LW+部署)