generator代码生成器大家都不陌生,但是在实际的业务场景中,实体类只有属性、getter/setter方法不满足需求,还需要手动去添加需要的功能。比如项目使用swagger生成api文档时,需要在实体类上标注@ApiModel,属性上标注@ApiModelProperty(value = “”, name = “”),或者引入一些包 import io.swagger.annotations.ApiModel ;这时我们就需要重写 DefaultCommentGenerator 类中的方法对实体类做些操作。
1、generator.properties

jdbc.driverClass=oracle.jdbc.driver.OracleDriver
jdbc.connectionURL=jdbc:oracle:thin:@127.0.0.1:1521:oracle
jdbc.userId=root
jdbc.password=root

2、generatorConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<!--配置生成器-->
<generatorConfiguration><!--导入属性配置--><properties resource="generator.properties"/><!--一个数据库一个context--><context id="default" targetRuntime="MyBatis3"><!-- 指定使用自定义生成器 --><commentGenerator type="com.china317.billing.util.MyCommentGenerator"></commentGenerator><!--jdbc的数据库连接 --><jdbcConnectiondriverClass="${jdbc.driverClass}"connectionURL="${jdbc.connectionURL}"userId="${jdbc.userId}"password="${jdbc.password}"><!-- 针对oracle数据库   生成实体类remarks,主要用来生成swagger实体对象注释 --><property name="remarksReporting" value="true"></property><!-- 针对mysql数据库 --><!--<property name="useInformationSchema" value="true"></property>--></jdbcConnection><!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制--><javaTypeResolver><property name="forceBigDecimals" value="false"/></javaTypeResolver><javaModelGenerator targetPackage="com.china317.billing.entity"targetProject="src/main/java"><!-- 是否允许子包,即targetPackage.schemaName.tableName --><property name="enableSubPackages" value="false"/><!-- 是否对model添加 构造函数 --><property name="constructorBased" value="true"/><!-- 是否对类CHAR类型的列的数据进行trim操作 --><property name="trimStrings" value="false"/><!-- 建立的Model对象是否 不可改变 即生成的Model对象不会有 setter方法,只有构造方法 --><property name="immutable" value="false"/></javaModelGenerator><!--Mapper映射文件生成所在的目录 为每一个数据库的表生成对应的SqlMap文件 --><sqlMapGenerator targetPackage="mapper"targetProject="src/main/resources"><property name="enableSubPackages" value="false"/></sqlMapGenerator><javaClientGenerator targetPackage="com.china317.billing.mapper"targetProject="src/main/java" type="XMLMAPPER"><property name="enableSubPackages" value="true"/></javaClientGenerator><!--生成对应表及类名--><table tableName="SYS_MENU" domainObjectName="SysMenu"enableCountByExample="false"enableUpdateByExample="false"enableDeleteByExample="false"enableSelectByExample="false"selectByExampleQueryId="true"></table></context>
</generatorConfiguration>

3、MyCommentGenerator.java

import org.mybatis.generator.api.IntrospectedColumn;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.api.dom.java.Field;
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.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.DefaultCommentGenerator;
import org.mybatis.generator.internal.DefaultShellCallback;import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;/*** 代码生成工具 -- 自定义代码生成器,可添加注解、注释、导包等* @author dulinxiao* @create 2021-03-22 4:00 PM*/
public class MyCommentGenerator extends DefaultCommentGenerator {@Overridepublic void addModelClassComment(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {//加注解topLevelClass.addAnnotation("@ApiModel");//导包topLevelClass.addImportedType("io.swagger.annotations.ApiModel");topLevelClass.addImportedType("io.swagger.annotations.ApiModelProperty");}/*** 字段属性注释*/@Overridepublic void addFieldComment(Field field, IntrospectedTable introspectedTable,IntrospectedColumn introspectedColumn) {field.addAnnotation("@ApiModelProperty(value = \""+introspectedColumn.getRemarks()+"\", name = \""+field.getName()+"\")");}/*** get方法注释*/@Overridepublic void addGetterComment(Method method, IntrospectedTable introspectedTable,IntrospectedColumn introspectedColumn) {method.addJavaDocLine("/**");StringBuilder sb = new StringBuilder();sb.append(" * @return ");sb.append(introspectedColumn.getActualColumnName());method.addJavaDocLine(sb.toString());method.addJavaDocLine(" */");}/*** set注释*/@Overridepublic void addSetterComment(Method method, IntrospectedTable introspectedTable,IntrospectedColumn introspectedColumn) {method.addJavaDocLine("/**");StringBuilder sb = new StringBuilder();Parameter parm = method.getParameters().get(0);sb.append(" * @param ");sb.append(parm.getName());method.addJavaDocLine(sb.toString());method.addJavaDocLine(" */");}public static void main(String[] args) {try {System.out.println("--------开始MG------");List<String> warnings = new ArrayList<String>();boolean overwrite = true;ClassLoader classloader = Thread.currentThread().getContextClassLoader();//填写你的generatorConfig.xml的路径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);System.out.println("---------MB完成------");} catch (SQLException | IOException | InterruptedException | InvalidConfigurationException | XMLParserException e) {e.printStackTrace();}}}

4、运行main方法执行,生成代码

generator代码自动生成工具(动态生成注释、类注解、方法注解等)适用于swagger等需要配置实体类的场景相关推荐

  1. 基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.4.0版)

    TableGo_20210921 v7.4.0 正式版发布,此次版本累计更新如下:           1.新增企业或个人的简单定制版本,为企业和个人提供软实力的增值           2.新增导入 ...

  2. 写一个静态HTML页面,直接写HTML代码和用JS动态生成代码,哪种方式要好

    如果写一个静态HTML页面,直接写HTML代码和用JS动态生成代码,哪种方式要好点?为什么? 不考虑人力因素(手写HTML太费时间排除),请从读取和解析或者其他的角度分析.谢谢 添加评论 分享 按投票 ...

  3. 代码文档生成工具-Doxygen生成CHM和RTF图文教程

    Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,可以从一套归档源文件开始,生成chm格式的文档.本文主要讲解如何在winddows下安装doxygen. 1.下载doxyge ...

  4. warning : 无法找到 v142 的生成工具。安装 v142 可使用 v142 生成工具进行生成。等错误MFC

    在release里设置就在release编译.  严重性    代码    说明    项目    文件    行    禁止显示状态 错误    MSB8020    无法找到 v142 的生成工具 ...

  5. 【VS】error MSB8020: 无法找到 v142 的生成工具(平台工具集 =“v142”)。若要使用 v142 生成工具进行生成,请安装 v142 生成工具

    [VS]error MSB8020: 无法找到 v142 的生成工具(平台工具集 ="v142").若要使用 v142 生成工具进行生成,请安装 v142 生成工具 别人用的vs2 ...

  6. 【Spring框架家族】mybatis generator代码自动生成(看得上眼直接拿去用即可)

    小工具,直接上代码,有大佬看的上,拿去复制改改相关参数就好 基于idea上使用的 pom文件 <build><plugins><plugin><groupId ...

  7. 用java写ods系统_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.0.0版)...

    TableGo是基于数据库的代码自动生成工具,低代码编程技术的实现,可以零代码自动生成SpringBoot项目工程.生成JavaBean.生成前后端分离的CRUD代码.生成MyBaits的Mapper ...

  8. java生成iso9660工具_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.0.0版)...

    TableGo_20210212 v7.0.0 正式版发布,此次版本更新如下: 1.新增对DB2数据库的支持 2.新增按字段生成文件,支持把字段.JSON.XML数据转换成任何代码 3.新增大量新的自 ...

  9. freemarker mysql 生成bean_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.6.6版)...

    TableGo_20191026 v6.6.6 正式发布,此次版本更新如下: 1.新增通过自定义模板生成Word文档的功能,可以使用FreeMarker模板生成自定义格式的数据库文档. 2.新增 Sw ...

最新文章

  1. Hinton再挖新坑:改进胶囊网络,融合Transformer神经场等研究
  2. linux 设置系统时间
  3. python版本升级和系统更新下载安装_Python环境安装与升级
  4. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1053:最大数输出
  5. 每天一个小算法(Shell Sort1)
  6. 华为任正非推荐学习的博士PPT《认识5G,发展5G》
  7. 整理了一个带语法高亮显示,及到处html功能的richtextbox控件
  8. 针对需要使用T3协议的Weblogic2628漏洞解决方案
  9. LYNC2013部署系列PART7:TMG部署
  10. 最受欢迎的网管工具集
  11. ibm刀片服务器系统瘫痪,ibm刀片服务器系统安装资料
  12. 如何测试网页的登录页面(转载)
  13. OPEN CASCADE Curve Continuity
  14. Hello Playwright:(8)等待页面加载
  15. 成都聚华祥科技:标题的关键词组合技巧
  16. 打开任务管理器的方法
  17. 全国地区三级联动原理案例
  18. int,long,long long等类型的范围
  19. 中文自然语言预处理总结
  20. 探讨企业即时通讯软件的价值

热门文章

  1. git使用MERGING处理
  2. 图像视频滤镜算法详解---滤镜初识
  3. 前端 30 问:愿你能三十而立
  4. PHP如何引用word模板生成word文件
  5. AutoCAD中自定义汉字线型文件
  6. 工作总结之动画与VR
  7. 一些论文中使用的统计检验(持续更新)+一些算法原理
  8. 【linux】循序渐进学运维-cp
  9. 电脑桌面摄像头怎么添加到计算机,笔记本电脑连接摄像头步骤_笔记本电脑怎么连接摄像头-win7之家...
  10. [信号处理小结系列1]信号和信息