Maven项目中使用mybatis-generator生成代码,加注释

Maven项目中使用mybatis-generator生成代码,加注释

效果展示

pojo

/*
*
* Student.java
* Copyright(C) 2017-2020 fendo公司
* @date 2022-03-25
*/
package com.jack.pojo;

import java.util.Date;

public class Student {
    
    
    /**
     * 学号
     */
    private String stuNo;

    /**
     * 名字
     */
    private String stuName;

    /**
     * 出生日期
     */
    private Date stuBornDate;

    /**
     * 性别
     */
    private String stuSex;

    /**
     * 学号
     * @return stu_no 学号
     */
    public String getStuNo() {
    
    
        return stuNo;
    }

    /**
     * 学号
     * @param stuNo 学号
     */
    public void setStuNo(String stuNo) {
    
    
        this.stuNo = stuNo == null ? null : stuNo.trim();
    }

    /**
     * 名字
     * @return stu_name 名字
     */
    public String getStuName() {
    
    
        return stuName;
    }

    /**
     * 名字
     * @param stuName 名字
     */
    public void setStuName(String stuName) {
    
    
        this.stuName = stuName == null ? null : stuName.trim();
    }

    /**
     * 出生日期
     * @return stu_born_date 出生日期
     */
    public Date getStuBornDate() {
    
    
        return stuBornDate;
    }

    /**
     * 出生日期
     * @param stuBornDate 出生日期
     */
    public void setStuBornDate(Date stuBornDate) {
    
    
        this.stuBornDate = stuBornDate;
    }

    /**
     * 性别
     * @return stu_sex 性别
     */
    public String getStuSex() {
    
    
        return stuSex;
    }

    /**
     * 性别
     * @param stuSex 性别
     */
    public void setStuSex(String stuSex) {
    
    
        this.stuSex = stuSex == null ? null : stuSex.trim();
    }
}

dao

/*
*
* StudentMapper.java
* Copyright(C) 2017-2020 fendo公司
* @date 2022-03-25
*/
package com.jack.dao;

import com.jack.pojo.Student;

public interface StudentMapper {
    
    
    /**
     *
     * @mbg.generated
     */
    int deleteByPrimaryKey(String stuNo);

    /**
     *
     * @mbg.generated
     */
    int insert(Student record);

    /**
     *
     * @mbg.generated
     */
    int insertSelective(Student record);

    /**
     *
     * @mbg.generated
     */
    Student selectByPrimaryKey(String stuNo);

    /**
     *
     * @mbg.generated
     */
    int updateByPrimaryKeySelective(Student record);

    /**
     *
     * @mbg.generated
     */
    int updateByPrimaryKey(Student record);
}

mapper

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jack.dao.StudentMapper">
  <resultMap id="BaseResultMap" type="com.jack.pojo.Student">
    <id column="stu_no" jdbcType="VARCHAR" property="stuNo" />
    <result column="stu_name" jdbcType="VARCHAR" property="stuName" />
    <result column="stu_born_date" jdbcType="DATE" property="stuBornDate" />
    <result column="stu_sex" jdbcType="CHAR" property="stuSex" />
  </resultMap>
  <sql id="Base_Column_List">
    stu_no, stu_name, stu_born_date, stu_sex
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
    select 
    <include refid="Base_Column_List" />
    from student
    where stu_no = #{stuNo,jdbcType=VARCHAR}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
    delete from student
    where stu_no = #{stuNo,jdbcType=VARCHAR}
  </delete>
  <insert id="insert" parameterType="com.jack.pojo.Student">
    insert into student (stu_no, stu_name, stu_born_date, 
      stu_sex)
    values (#{stuNo,jdbcType=VARCHAR}, #{stuName,jdbcType=VARCHAR}, #{stuBornDate,jdbcType=DATE}, 
      #{stuSex,jdbcType=CHAR})
  </insert>
  <insert id="insertSelective" parameterType="com.jack.pojo.Student">
    insert into student
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="stuNo != null">
        stu_no,
      </if>
      <if test="stuName != null">
        stu_name,
      </if>
      <if test="stuBornDate != null">
        stu_born_date,
      </if>
      <if test="stuSex != null">
        stu_sex,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="stuNo != null">
        #{stuNo,jdbcType=VARCHAR},
      </if>
      <if test="stuName != null">
        #{stuName,jdbcType=VARCHAR},
      </if>
      <if test="stuBornDate != null">
        #{stuBornDate,jdbcType=DATE},
      </if>
      <if test="stuSex != null">
        #{stuSex,jdbcType=CHAR},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.jack.pojo.Student">
    update student
    <set>
      <if test="stuName != null">
        stu_name = #{stuName,jdbcType=VARCHAR},
      </if>
      <if test="stuBornDate != null">
        stu_born_date = #{stuBornDate,jdbcType=DATE},
      </if>
      <if test="stuSex != null">
        stu_sex = #{stuSex,jdbcType=CHAR},
      </if>
    </set>
    where stu_no = #{stuNo,jdbcType=VARCHAR}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.jack.pojo.Student">
    update student
    set stu_name = #{stuName,jdbcType=VARCHAR},
      stu_born_date = #{stuBornDate,jdbcType=DATE},
      stu_sex = #{stuSex,jdbcType=CHAR}
    where stu_no = #{stuNo,jdbcType=VARCHAR}
  </update>
  <resultMap id="BaseResultMap" type="com.jack.pojo.Student">
    <id column="stu_no" jdbcType="VARCHAR" property="stuNo" />
    <result column="stu_name" jdbcType="VARCHAR" property="stuName" />
    <result column="stu_born_date" jdbcType="DATE" property="stuBornDate" />
    <result column="stu_sex" jdbcType="CHAR" property="stuSex" />
  </resultMap>
  <sql id="Base_Column_List">
    stu_no, stu_name, stu_born_date, stu_sex
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
    select 
    <include refid="Base_Column_List" />
    from student
    where stu_no = #{stuNo,jdbcType=VARCHAR}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
    delete from student
    where stu_no = #{stuNo,jdbcType=VARCHAR}
  </delete>
  <insert id="insert" parameterType="com.jack.pojo.Student">
    insert into student (stu_no, stu_name, stu_born_date, 
      stu_sex)
    values (#{stuNo,jdbcType=VARCHAR}, #{stuName,jdbcType=VARCHAR}, #{stuBornDate,jdbcType=DATE}, 
      #{stuSex,jdbcType=CHAR})
  </insert>
  <insert id="insertSelective" parameterType="com.jack.pojo.Student">
    insert into student
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="stuNo != null">
        stu_no,
      </if>
      <if test="stuName != null">
        stu_name,
      </if>
      <if test="stuBornDate != null">
        stu_born_date,
      </if>
      <if test="stuSex != null">
        stu_sex,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="stuNo != null">
        #{stuNo,jdbcType=VARCHAR},
      </if>
      <if test="stuName != null">
        #{stuName,jdbcType=VARCHAR},
      </if>
      <if test="stuBornDate != null">
        #{stuBornDate,jdbcType=DATE},
      </if>
      <if test="stuSex != null">
        #{stuSex,jdbcType=CHAR},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.jack.pojo.Student">
    update student
    <set>
      <if test="stuName != null">
        stu_name = #{stuName,jdbcType=VARCHAR},
      </if>
      <if test="stuBornDate != null">
        stu_born_date = #{stuBornDate,jdbcType=DATE},
      </if>
      <if test="stuSex != null">
        stu_sex = #{stuSex,jdbcType=CHAR},
      </if>
    </set>
    where stu_no = #{stuNo,jdbcType=VARCHAR}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.jack.pojo.Student">
    update student
    set stu_name = #{stuName,jdbcType=VARCHAR},
      stu_born_date = #{stuBornDate,jdbcType=DATE},
      stu_sex = #{stuSex,jdbcType=CHAR}
    where stu_no = #{stuNo,jdbcType=VARCHAR}
  </update>
  <resultMap id="BaseResultMap" type="com.jack.pojo.Student">
    <id column="stu_no" jdbcType="VARCHAR" property="stuNo" />
    <result column="stu_name" jdbcType="VARCHAR" property="stuName" />
    <result column="stu_born_date" jdbcType="DATE" property="stuBornDate" />
    <result column="stu_sex" jdbcType="CHAR" property="stuSex" />
  </resultMap>
  <sql id="Base_Column_List">
    stu_no, stu_name, stu_born_date, stu_sex
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
    select 
    <include refid="Base_Column_List" />
    from student
    where stu_no = #{stuNo,jdbcType=VARCHAR}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
    delete from student
    where stu_no = #{stuNo,jdbcType=VARCHAR}
  </delete>
  <insert id="insert" parameterType="com.jack.pojo.Student">
    insert into student (stu_no, stu_name, stu_born_date, 
      stu_sex)
    values (#{stuNo,jdbcType=VARCHAR}, #{stuName,jdbcType=VARCHAR}, #{stuBornDate,jdbcType=DATE}, 
      #{stuSex,jdbcType=CHAR})
  </insert>
  <insert id="insertSelective" parameterType="com.jack.pojo.Student">
    insert into student
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="stuNo != null">
        stu_no,
      </if>
      <if test="stuName != null">
        stu_name,
      </if>
      <if test="stuBornDate != null">
        stu_born_date,
      </if>
      <if test="stuSex != null">
        stu_sex,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="stuNo != null">
        #{stuNo,jdbcType=VARCHAR},
      </if>
      <if test="stuName != null">
        #{stuName,jdbcType=VARCHAR},
      </if>
      <if test="stuBornDate != null">
        #{stuBornDate,jdbcType=DATE},
      </if>
      <if test="stuSex != null">
        #{stuSex,jdbcType=CHAR},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.jack.pojo.Student">
    update student
    <set>
      <if test="stuName != null">
        stu_name = #{stuName,jdbcType=VARCHAR},
      </if>
      <if test="stuBornDate != null">
        stu_born_date = #{stuBornDate,jdbcType=DATE},
      </if>
      <if test="stuSex != null">
        stu_sex = #{stuSex,jdbcType=CHAR},
      </if>
    </set>
    where stu_no = #{stuNo,jdbcType=VARCHAR}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.jack.pojo.Student">
    update student
    set stu_name = #{stuName,jdbcType=VARCHAR},
      stu_born_date = #{stuBornDate,jdbcType=DATE},
      stu_sex = #{stuSex,jdbcType=CHAR}
    where stu_no = #{stuNo,jdbcType=VARCHAR}
  </update>
  <resultMap id="BaseResultMap" type="com.jack.pojo.Student">
    <id column="stu_no" jdbcType="VARCHAR" property="stuNo" />
    <result column="stu_name" jdbcType="VARCHAR" property="stuName" />
    <result column="stu_born_date" jdbcType="DATE" property="stuBornDate" />
    <result column="stu_sex" jdbcType="CHAR" property="stuSex" />
  </resultMap>
  <sql id="Base_Column_List">
    stu_no, stu_name, stu_born_date, stu_sex
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
    select 
    <include refid="Base_Column_List" />
    from student
    where stu_no = #{stuNo,jdbcType=VARCHAR}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
    delete from student
    where stu_no = #{stuNo,jdbcType=VARCHAR}
  </delete>
  <insert id="insert" parameterType="com.jack.pojo.Student">
    insert into student (stu_no, stu_name, stu_born_date, 
      stu_sex)
    values (#{stuNo,jdbcType=VARCHAR}, #{stuName,jdbcType=VARCHAR}, #{stuBornDate,jdbcType=DATE}, 
      #{stuSex,jdbcType=CHAR})
  </insert>
  <insert id="insertSelective" parameterType="com.jack.pojo.Student">
    insert into student
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="stuNo != null">
        stu_no,
      </if>
      <if test="stuName != null">
        stu_name,
      </if>
      <if test="stuBornDate != null">
        stu_born_date,
      </if>
      <if test="stuSex != null">
        stu_sex,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="stuNo != null">
        #{stuNo,jdbcType=VARCHAR},
      </if>
      <if test="stuName != null">
        #{stuName,jdbcType=VARCHAR},
      </if>
      <if test="stuBornDate != null">
        #{stuBornDate,jdbcType=DATE},
      </if>
      <if test="stuSex != null">
        #{stuSex,jdbcType=CHAR},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.jack.pojo.Student">
    update student
    <set>
      <if test="stuName != null">
        stu_name = #{stuName,jdbcType=VARCHAR},
      </if>
      <if test="stuBornDate != null">
        stu_born_date = #{stuBornDate,jdbcType=DATE},
      </if>
      <if test="stuSex != null">
        stu_sex = #{stuSex,jdbcType=CHAR},
      </if>
    </set>
    where stu_no = #{stuNo,jdbcType=VARCHAR}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.jack.pojo.Student">
    update student
    set stu_name = #{stuName,jdbcType=VARCHAR},
      stu_born_date = #{stuBornDate,jdbcType=DATE},
      stu_sex = #{stuSex,jdbcType=CHAR}
    where stu_no = #{stuNo,jdbcType=VARCHAR}
  </update>
</mapper>

创建maven项目,引入需要依赖

image-20220325231419274

image-20220325231441943

image-20220325231555967

image-20220325231647807

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.geekmice.mvnmybatis</groupId>
    <artifactId>mvnmybatis</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <configuration>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
            </plugin>
            <!--该插件主要是mybatis代码生成器-->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>5.1.34</version>
                    </dependency>
                    <dependency>
                        <groupId>com.geekmice.springbootoraclecrud.vo</groupId>
                        <artifactId>MyCommentGenerator</artifactId>
                        <version>1.0</version>
                        <scope>system</scope>
                        <systemPath>${basedir}/customjar/a2.jar</systemPath>
                    </dependency>
                </dependencies>
                <configuration>
                    <!-- 配置文件的路径-->
                    <configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>
                    <overwrite>true</overwrite>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

目录结构

image-20220325233458450

需要生成哪个表,将student,修改对应表,双击maven中mybatis-generator

image-20220325233635704

image-20220325233530102

自定义mybatis代码生成

关键代码

package com.geekmice.springbootoraclecrud.vo;

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.java.TopLevelClass;
import org.mybatis.generator.api.dom.xml.XmlElement;
import org.mybatis.generator.config.MergeConstants;
import org.mybatis.generator.config.PropertyRegistry;

/**   
 * @Title: MyCommentGenerator.java 
 * @Package com.fendo.mybatis_generator 
 * @Description:  mybatis generator 自定义comment生成器.
 *                基于MBG 1.3.5
 * @author pmb
 * @version V1.0   
*/
public class MyCommentGenerator implements CommentGenerator {
    
    

	/**
	  * properties配置文件
	 */
	private Properties 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());
	}

	/**
	 * Java类的类注释
	 */
	@Override
	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(" */");
	}

	/**
	 * 为类添加注释
	 */
	@Override
	public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable, boolean markAsDoNotDelete) {
    
    
		if (suppressAllComments) {
    
    
			return;
		}
		StringBuilder sb = new StringBuilder();
		innerClass.addJavaDocLine("/**");
		sb.append(" * ");
		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(" */");
	}

	/**
	 * Mybatis的Mapper.xml文件里面的注释
	 */
	@Override
	public void addComment(XmlElement xmlElement) {
    
    

	}

	/**
	 * 
	 *@Title addConfigurationProperties 
	 *@Description: 从该配置中的任何属性添加此实例的属性CommentGenerator配置。
	 *              这个方法将在任何其他方法之前被调用。
	 *@Author fendo
	 *@Date 2017年10月5日 下午3:45:58
	 *@return
	 *@throws
	 */
	@Override
	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));
	}

	/**
	 * 
	 *@Title getDateString 
	 *@Description: 此方法返回格式化的日期字符串以包含在Javadoc标记中和XML注释。 如果您不想要日期,则可以返回null在这些文档元素中。
	 *@Author fendo
	 *@Date 2017年10月5日 下午3:45:58
	 *@return
	 *@throws
	 */
	protected String getDateString() {
    
    
		String result = null;
		if (!suppressDate) {
    
    
			result = currentDateStr;
		}
		return result;
	}

	/**
	 * 
	 *@Title addJavadocTag 
	 *@Description: 此方法为其添加了自定义javadoc标签。
	 *@Author fendo
	 *@Date 2017年10月5日 下午3:49:05
	 *@param javaElement
	 *@param markAsDoNotDelete
	 *@throws
	 */
	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());
	}

	/**
	 * 为枚举添加注释
	 */
	@Override
	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(" */");
	}

	/**
	 * Java属性注释
	 */
	@Override
	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(" */");

	}

	/**
	 * 为字段添加注释
	 */
	@Override
	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(" */");
	}

	/**
	 * 普通方法的注释,这里主要是XXXMapper.java里面的接口方法的注释
	 */
	@Override
	public void addGeneralMethodComment(Method method, IntrospectedTable introspectedTable) {
    
    
		if (suppressAllComments) {
    
    
			return;
		}
		method.addJavaDocLine("/**");
		addJavadocTag(method, false);
		method.addJavaDocLine(" */");
	}

	/**
	 * 给getter方法加注释
	 */
	@Override
	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(" */");
	}

	/**
	 * 给Java文件加注释,这个注释是在文件的顶部,也就是package上面。
	 */
	@Override
	public void addJavaFileComment(CompilationUnit compilationUnit) {
    
    
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		compilationUnit.addFileCommentLine("/*");
		compilationUnit.addFileCommentLine("*");
		compilationUnit.addFileCommentLine("* " + compilationUnit.getType().getShortName() + ".java");
		compilationUnit.addFileCommentLine("* Copyright(C) 2017-2020 fendo公司");
		compilationUnit.addFileCommentLine("* @date " + sdf.format(new Date()) + "");
		compilationUnit.addFileCommentLine("*/");
	}

	/**
	 * 为模型类添加注释
	 */
	@Override
	public void addModelClassComment(TopLevelClass arg0, IntrospectedTable arg1) {
    
    

	}

	/**
	 * 为调用此方法作为根元素的第一个子节点添加注释。
	 */
	@Override
	public void addRootComment(XmlElement arg0) {
    
    

	}

	/**
	 * 给setter方法加注释
	 */
	@Override
	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(" */");
	}

}

实践

需要的mybatis配置文件

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>

    <!--
        出现错误:Caused by: java.   lang.ClassNotFoundException: com.mysql.jdbc.Driver
        解决办法:将本地的MAVEN仓库中的mysql驱动引入进来
    -->
    <classPathEntry
            location="D:\DevTools\apache-maven-3.6.3\localrepository\mysql\mysql-connector-java\8.0.28\mysql-connector-java-8.0.28.jar"/>

    <context id="mysqlgenerator" targetRuntime="MyBatis3">
        <!--不生成注释-->
        <commentGenerator type="com.geekmice.springbootoraclecrud.vo.MyCommentGenerator">
            <property name="suppressAllComments" value="false"/>
            <property name="suppressDate" value="true"></property>
        </commentGenerator>
        <!-- 配置数据库连接 -->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/school?serverTimezone=UTC&amp;useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=true"
                        userId="root"
                        password="root"/>

        <!-- 指定javaBean生成的位置 -->
        <javaModelGenerator targetPackage="com.jack.pojo" targetProject="src/main/java">
            <!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
            <property name="enableSubPackages" value="true"/>
            <!-- 设置是否在getter方法中,对String类型字段调用trim()方法 -->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!--指定sql映射文件生成的位置 -->
        <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!-- 指定dao接口生成的位置,mapper接口 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.jack.dao" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <!-- table表生成对应的DoaminObject -->
        <table tableName="student" domainObjectName="Student" enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>

    </context>

</generatorConfiguration>

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- 配置文件的根元素 -->
<configuration>
    <!--配置全局属性-->
    <settings>
        <!--使用jdbc的getGeneratedKeys获取数据库自增主键值-->
        <setting name="useGeneratedKeys" value="true"/>
        <!--使用列标签替换列别名 默认未true-->
        <setting name="useColumnLabel" value="true"/>
        <!--开启驼峰式命名转换:Table{create_time} -> Entity{createTime}-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
</configuration>

参考博文
仓库地址
Maven项目中使用mybatis-generator生成代码,加注释

猜你喜欢

转载自blog.csdn.net/greek7777/article/details/123748222