Mybatis-Generator 自定义注释

 

继承DefaultCommentGenerator 或者CommentGenerator 

 

 


package com.zhianchen.mysqlremark.toword.config;

import org.apache.commons.lang3.StringUtils;
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.PropertyRegistry;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;

/*
*
*@Description MybatisGenerator
*@Author chenzhian
*@Date 2021/11/11 16:36
*/
public class MybatisGenerator implements CommentGenerator {
private Properties properties;
private Properties systemPro;
//时间
private String currentDateStr;

private Boolean suppressDate;
//时间
private Boolean suppressAllComments;

private String author;

public MybatisGenerator(){
properties=new Properties();
systemPro=System.getProperties();
currentDateStr=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());

}
public void addConfigurationProperties(Properties properties) {
this.properties.putAll(properties);
String strsuppressDate= properties.getProperty(PropertyRegistry.COMMENT_GENERATOR_SUPPRESS_DATE);
suppressDate="true".equals(strsuppressDate);
String strsuppressAllComments= properties.getProperty(PropertyRegistry.COMMENT_GENERATOR_SUPPRESS_ALL_COMMENTS);
suppressAllComments="true".equals(strsuppressAllComments);
author=properties.getProperty("author");
}

/**
* 字段注释的方法
*/
public void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
// 添加字段注释
field.addJavaDocLine("/**");
field.addJavaDocLine("* "+introspectedColumn.getActualColumnName());
field.addJavaDocLine("* "+introspectedColumn.getRemarks());
field.addJavaDocLine(" */");
}

public void addFieldComment(Field field, IntrospectedTable introspectedTable) {
// 添加字段注释
field.addJavaDocLine("/**");
field.addJavaDocLine("* "+field.getName());
field.addJavaDocLine(" */");
}

public void addModelClassComment(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
if(suppressAllComments){
return;
}
// 添加字段注释
topLevelClass.addJavaDocLine("/**");
topLevelClass.addJavaDocLine(" * ");
topLevelClass.addJavaDocLine(""+introspectedTable.getFullyQualifiedTable());
topLevelClass.addJavaDocLine(" * @description : " + introspectedTable.getRemarks());
topLevelClass.addJavaDocLine(" * @author : " + author);
topLevelClass.addJavaDocLine(" * @date : " + currentDateStr);
topLevelClass.addJavaDocLine(" * @modify : " );
topLevelClass.addJavaDocLine(" */");
}

public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable) {
if(suppressAllComments){
return;
}
// 添加字段注释
innerClass.addJavaDocLine("/**");
innerClass.addJavaDocLine(" * ");
innerClass.addJavaDocLine(""+introspectedTable.getFullyQualifiedTable());
innerClass.addJavaDocLine(" * @description : " + introspectedTable.getRemarks());
innerClass.addJavaDocLine(" * @author : " + author);
innerClass.addJavaDocLine(" * @date : " + currentDateStr);
innerClass.addJavaDocLine(" * @modify : " );
innerClass.addJavaDocLine(" */");
}

public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable, boolean b) {
if(suppressAllComments){
return;
}
// 添加字段注释
innerClass.addJavaDocLine("/**");
innerClass.addJavaDocLine(" * ");
innerClass.addJavaDocLine(""+introspectedTable.getFullyQualifiedTable());
innerClass.addJavaDocLine(" * @description : " + introspectedTable.getRemarks());
innerClass.addJavaDocLine(" * @author : " + author);
innerClass.addJavaDocLine(" * @date : " + currentDateStr);
innerClass.addJavaDocLine(" * @modify : " );
innerClass.addJavaDocLine(" */");
}

public void addEnumComment(InnerEnum innerEnum, IntrospectedTable introspectedTable) {
if(suppressAllComments){
return;
}
// 添加字段注释
innerEnum.addJavaDocLine("/**");
innerEnum.addJavaDocLine(" * ");
innerEnum.addJavaDocLine(""+introspectedTable.getFullyQualifiedTable());
innerEnum.addJavaDocLine(" * @description : " + introspectedTable.getRemarks());
innerEnum.addJavaDocLine(" * @author : " + author);
innerEnum.addJavaDocLine(" * @date : " + currentDateStr);
innerEnum.addJavaDocLine(" * @modify : " );
innerEnum.addJavaDocLine(" */");
}

public void addGetterComment(Method method, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
method.addJavaDocLine("/**");
method.addJavaDocLine("* "+introspectedTable.getRemarks());
method.addJavaDocLine("* @return "+method.getName());

method.addJavaDocLine(" */");
}

public void addSetterComment(Method method, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
method.addJavaDocLine("/**");
method.addJavaDocLine("* "+introspectedTable.getRemarks());
Parameter parameter=method.getParameters().get(0);
method.addJavaDocLine("* @param "+parameter.getName());

method.addJavaDocLine(" */");
}

public void addGeneralMethodComment(Method method, IntrospectedTable introspectedTable) {
if(suppressAllComments){
return;
}
// 添加字段注释
method.addJavaDocLine("/**");
method.addJavaDocLine(" * ");
//method.addJavaDocLine(""+method.getName());
method.addJavaDocLine(" * @description : " + introspectedTable.getRemarks());
method.addJavaDocLine(" * @author : " + author);
method.addJavaDocLine(" * @date : " + currentDateStr);
method.addJavaDocLine(" * @modify : " );
method.addJavaDocLine(" */");
}

public void addJavaFileComment(CompilationUnit compilationUnit) {
if(suppressAllComments){
return;
}

}

public void addComment(XmlElement xmlElement) {

}

public void addRootComment(XmlElement xmlElement) {

}
}

 

,就是introspectedColumn.getRemarks()获取不到字段的注释,生成的javabean里面应该显示字段注释的地方显示的是null.

或者 introspectedTable.getRemarks() 获取不到表的注释,记得加上以下

 

 

<?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>
<classPathEntry location="J:\program\myprogram\maven\repository\mysql\mysql-connector-java\5.1.30\mysql-connector-java-5.1.30.jar"/>
<context id="DB2Tables" targetRuntime="MyBatis3">
<!-- 生成mysql带有分页的sql的插件 这个可以自己写,-->
<!-- <plugin type="generator.MysqlPaginationPlugin" />-->
<plugin type="org.mybatis.generator.plugins.ToStringPlugin" />
<plugin type="org.mybatis.generator.plugins.SerializablePlugin" />
<!-- <property name="javaFileEncoding" value="UTF-8"/>-->

<!-- 自定义的注释规则,继承 DefaultCommentGenerator 重写 一些方法 -->
<commentGenerator type="com.zhianchen.mysqlremark.toword.config.MybatisGenerator">
<!-- 是否去除自动生成日期的注释 true:是 : false:否 -->
<property name="suppressDate" value="true"/>
<!-- 是否去除所有自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="false"/>
<property name="author" value="zhianchen"/>
</commentGenerator>
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/information_schema"
userId="aaa"
password="aaaa">

    <!-- 仅仅查询当前库的表,不去查询其他库,默认是false。从mysql-connector-java 5.x 版本起,nullCatalogMeansCurrent属性由原来的默认true改为了false-->
      <property name="nullCatalogMeansCurrent" value="true" />

            <!-- 针对oracle数据库 -->
<!--<property name="remarksReporting" value="true"></property>-->
<!-- 针对mysql数据库 -->
<property name="useInformationSchema" value="true"></property>
</jdbcConnection>
<!--生成entity类存放位置-->
<javaModelGenerator targetPackage="com.zhianchen.mysqlremark.toword.entity" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!--生成映射文件存放位置-->
<sqlMapGenerator targetPackage="mapping.master" targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!--生成Dao类存放位置-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.zhianchen.mysqlremark.toword.dao"
targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- <table tableName="TABLES" domainObjectName="Tables" />
<table tableName="COLUMNS" domainObjectName="Columns"/>-->
<table tableName="STATISTICS" domainObjectName="Statistics"/>

</context>
</generatorConfiguration>

 

 

 

 

来源

mysql generator备注_MyBatis Generator 自定义生成注释的方法

Mybatis Generator 自定义注释(生成带有中文字段名注释的Bean)

mybatis-generator自定义注释生成

posted @ 2021-09-08 17:39  ☆♂安♀★  阅读(528)  评论(0编辑  收藏  举报