1. 程式人生 > >MybatisGenerator自動生成程式碼 (帶自定義註釋)

MybatisGenerator自動生成程式碼 (帶自定義註釋)

說明: 適用於maven專案, mysql/oracle資料庫, 開發工具: IDEA

1.配置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>
    <!-- 引入配置檔案 -->
    <!--<properties resource="application-test.properties"/>-->
    <!--<classPathEntry-->
            <!--location="C:\Users\ubeii\.m2\repository\mysql\mysql-connector-java\5.1.46\mysql-connector-java-5.1.46.jar"/>-->
    <context id="default" targetRuntime="MyBatis3">
        <!-- 生成的Java檔案的編碼 -->
        <property name="javaFileEncoding" value="UTF-8" />
        <!-- 格式化java程式碼 -->
        <property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter" />
        <!-- JavaBean 實現 序列化 介面 -->
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
        <!-- genenat entity時,生成toString -->
        <plugin type="org.mybatis.generator.plugins.ToStringPlugin" />
        <!-- 自定義物理分頁  可生成支援Mysql資料的limit  不支援Oracle -->
        <!--<plugin type="org.mybatis.generator.plugins.page.PaginationPlugin" />-->
        <!-- 自定義查詢指定欄位  -->
        <!--<plugin type="org.mybatis.generator.plugins.field.FieldsPlugin" />-->
        <!-- 開啟支援記憶體分頁   可生成 支援記憶體分佈的方法及引數
        <plugin type="org.mybatis.generator.plugins.RowBoundsPlugin" />
        -->
        <!-- generate entity時,生成hashcode和equals方法
        <plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin" />
         -->
        <!-- 此處是將Example改名為Criteria 當然 想改成什麼都行~    -->
        <!--<plugin type="org.mybatis.generator.plugins.RenameExampleClassPlugin">-->
            <!--<property name="searchString" value="Example$" />-->
            <!--<!– 替換後  -->
            <!--<property name="replaceString" value="Criteria" />    -->
             <!--–>-->
            <!--<property name="replaceString" value="Query" />-->
        <!--</plugin>-->
        <!-- 此處是將UserMapper.xml改名為UserDao.xml 當然 想改成什麼都行~ -->
        <!--<plugin type="org.mybatis.generator.plugins.rename.RenameSqlMapperPlugin">-->
            <!--<property name="searchString" value="Mapper" />-->
            <!--<property name="replaceString" value="Dao" />-->
        <!--</plugin>-->

        <!--<!– 此處是將UserMapper改名為UserDao 介面 當然 想改成什麼都行~  –>-->
        <!--<plugin type="org.mybatis.generator.plugins.rename.RenameJavaMapperPlugin">-->
            <!--<property name="searchString" value="Mapper$" />-->
            <!--<property name="replaceString" value="Dao" />-->
        <!--</plugin>-->

        <!-- 是否去除自動生成的註釋 true:是 : false:否 -->
        <commentGenerator>
            <property name="suppressAllComments" value="false"/>
            <!--生成的註釋包含時間戳-->
            <property name="suppressDate" value="true"/>
        </commentGenerator>
        <!--資料庫連線的資訊:驅動類、連線地址、使用者名稱、密碼 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://45.78.46.203:3306/allen?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true" userId="root"
                        password="root">
            <property name="useInformationSchema" value="true"/>
        </jdbcConnection>
        <!-- 預設false,把JDBC DECIMAL 和 NUMERIC 型別解析為 Integer,為 true時把JDBC DECIMAL 和
            NUMERIC 型別解析為java.math.BigDecimal -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="true"/>
        </javaTypeResolver>
        <!-- targetProject:生成PO類的位置 -->
        <javaModelGenerator targetPackage="com.allen.common.entity" targetProject="src/main/java">
            <!-- enableSubPackages:是否讓schema作為包的字尾 -->
            <property name="enableSubPackages" value="true"/>
            <!-- 從資料庫返回的值被清理前後的空格 -->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!-- targetProject:mapper對映檔案生成的位置 -->
        <!--<sqlMapGenerator targetPackage="com.allen.common.mapper" targetProject="src/main/java">-->
            <!--<!– enableSubPackages:是否讓schema作為包的字尾 –>-->
            <!--<property name="enableSubPackages" value="true"/>-->
        <!--</sqlMapGenerator>-->
        <!--ANNOTATEDMAPPER: 生成java類檔案,基於註解的Mapper介面,不會有對應的XML對映檔案
            MIXEDMAPPER:XML和註解的混合形式
            XMLMAPPER:所有的方法都在XML中,介面呼叫依賴XML檔案 -->
        <javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="com.allen.common.mapper"
                             targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <!--<table tableName="user" domainObjectName="User" enableCountByExample="false"-->
               <!--enableSelectByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"/>-->
        <table schema="allen" tableName="USER" domainObjectName="TUser"
               enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false">
        </table>
    </context>
</generatorConfiguration>

2. 配置pom檔案

2.1 新增依賴 

               <dependency>
			<groupId>org.mybatis.generator</groupId>
			<artifactId>mybatis-generator-core</artifactId>
			<version>1.3.6</version>
		</dependency>

2.2 新增外掛

			<plugin>
				<groupId>org.mybatis.generator</groupId>
				<artifactId>mybatis-generator-maven-plugin</artifactId>
				<version>1.3.6</version>
				<configuration>
					<!--配置檔案的位置-->
					<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
					<verbose>true</verbose>
					<overwrite>true</overwrite>
				</configuration>
				<executions>
					<execution>
						<id>Generate MyBatis Artifacts</id>
						<goals>
							<goal>generate</goal>
						</goals>
					</execution>
				</executions>
				<dependencies>
					<dependency>
						<groupId>org.mybatis.generator</groupId>
						<artifactId>mybatis-generator-core</artifactId>
						<version>1.3.6</version>
					</dependency>
					<dependency>
						<groupId>mysql</groupId>
						<artifactId>mysql-connector-java</artifactId>
						<version>5.1.46</version>
					</dependency>
					<dependency>
						<groupId>org.mybatis</groupId>
						<artifactId>mybatis</artifactId>
						<version>3.4.6</version>
					</dependency>
				</dependencies>
			</plugin>

3. 啟動


出現下面情形說明成功: 

BUILD SUCCESS , Process finished with exit code 0 (如果code值為1則失敗)


4. 看一下生成後的檔案

package com.allen.common.entity;

import java.io.Serializable;

public class TUser implements Serializable {
    private String userId;

    private String userPassword;

    private String userName;

    private String userSex;

    private String userPhone;

    private String userEmail;

    private String userAddress;

    private String userRemark;

    private static final long serialVersionUID = 1L;

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId == null ? null : userId.trim();
    }

    public String getUserPassword() {
        return userPassword;
    }

    public void setUserPassword(String userPassword) {
        this.userPassword = userPassword == null ? null : userPassword.trim();
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName == null ? null : userName.trim();
    }

    public String getUserSex() {
        return userSex;
    }

    public void setUserSex(String userSex) {
        this.userSex = userSex == null ? null : userSex.trim();
    }

    public String getUserPhone() {
        return userPhone;
    }

    public void setUserPhone(String userPhone) {
        this.userPhone = userPhone == null ? null : userPhone.trim();
    }

    public String getUserEmail() {
        return userEmail;
    }

    public void setUserEmail(String userEmail) {
        this.userEmail = userEmail == null ? null : userEmail.trim();
    }

    public String getUserAddress() {
        return userAddress;
    }

    public void setUserAddress(String userAddress) {
        this.userAddress = userAddress == null ? null : userAddress.trim();
    }

    public String getUserRemark() {
        return userRemark;
    }

    public void setUserRemark(String userRemark) {
        this.userRemark = userRemark == null ? null : userRemark.trim();
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", userId=").append(userId);
        sb.append(", userPassword=").append(userPassword);
        sb.append(", userName=").append(userName);
        sb.append(", userSex=").append(userSex);
        sb.append(", userPhone=").append(userPhone);
        sb.append(", userEmail=").append(userEmail);
        sb.append(", userAddress=").append(userAddress);
        sb.append(", userRemark=").append(userRemark);
        sb.append(", serialVersionUID=").append(serialVersionUID);
        sb.append("]");
        return sb.toString();
    }
}
package com.allen.common.mapper;

import com.allen.common.entity.TUser;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.InsertProvider;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.apache.ibatis.annotations.UpdateProvider;
import org.apache.ibatis.type.JdbcType;

public interface TUserMapper {
    @Delete({
        "delete from USER",
        "where USER_ID = #{userId,jdbcType=VARCHAR}"
    })
    int deleteByPrimaryKey(String userId);

    @Insert({
        "insert into USER (USER_ID, USER_PASSWORD, ",
        "USER_NAME, USER_SEX, ",
        "USER_PHONE, USER_EMAIL, ",
        "USER_ADDRESS, USER_REMARK)",
        "values (#{userId,jdbcType=VARCHAR}, #{userPassword,jdbcType=VARCHAR}, ",
        "#{userName,jdbcType=VARCHAR}, #{userSex,jdbcType=VARCHAR}, ",
        "#{userPhone,jdbcType=VARCHAR}, #{userEmail,jdbcType=VARCHAR}, ",
        "#{userAddress,jdbcType=VARCHAR}, #{userRemark,jdbcType=VARCHAR})"
    })
    int insert(TUser record);

    @InsertProvider(type=TUserSqlProvider.class, method="insertSelective")
    int insertSelective(TUser record);

    @Select({
        "select",
        "USER_ID, USER_PASSWORD, USER_NAME, USER_SEX, USER_PHONE, USER_EMAIL, USER_ADDRESS, ",
        "USER_REMARK",
        "from USER",
        "where USER_ID = #{userId,jdbcType=VARCHAR}"
    })
    @Results({
        @Result(column="USER_ID", property="userId", jdbcType=JdbcType.VARCHAR, id=true),
        @Result(column="USER_PASSWORD", property="userPassword", jdbcType=JdbcType.VARCHAR),
        @Result(column="USER_NAME", property="userName", jdbcType=JdbcType.VARCHAR),
        @Result(column="USER_SEX", property="userSex", jdbcType=JdbcType.VARCHAR),
        @Result(column="USER_PHONE", property="userPhone", jdbcType=JdbcType.VARCHAR),
        @Result(column="USER_EMAIL", property="userEmail", jdbcType=JdbcType.VARCHAR),
        @Result(column="USER_ADDRESS", property="userAddress", jdbcType=JdbcType.VARCHAR),
        @Result(column="USER_REMARK", property="userRemark", jdbcType=JdbcType.VARCHAR)
    })
    TUser selectByPrimaryKey(String userId);

    @UpdateProvider(type=TUserSqlProvider.class, method="updateByPrimaryKeySelective")
    int updateByPrimaryKeySelective(TUser record);

    @Update({
        "update USER",
        "set USER_PASSWORD = #{userPassword,jdbcType=VARCHAR},",
          "USER_NAME = #{userName,jdbcType=VARCHAR},",
          "USER_SEX = #{userSex,jdbcType=VARCHAR},",
          "USER_PHONE = #{userPhone,jdbcType=VARCHAR},",
          "USER_EMAIL = #{userEmail,jdbcType=VARCHAR},",
          "USER_ADDRESS = #{userAddress,jdbcType=VARCHAR},",
          "USER_REMARK = #{userRemark,jdbcType=VARCHAR}",
        "where USER_ID = #{userId,jdbcType=VARCHAR}"
    })
    int updateByPrimaryKey(TUser record);
}
package com.allen.common.mapper;

import com.allen.common.entity.TUser;
import org.apache.ibatis.jdbc.SQL;

public class TUserSqlProvider {

    public String insertSelective(TUser record) {
        SQL sql = new SQL();
        sql.INSERT_INTO("USER");
        
        if (record.getUserId() != null) {
            sql.VALUES("USER_ID", "#{userId,jdbcType=VARCHAR}");
        }
        
        if (record.getUserPassword() != null) {
            sql.VALUES("USER_PASSWORD", "#{userPassword,jdbcType=VARCHAR}");
        }
        
        if (record.getUserName() != null) {
            sql.VALUES("USER_NAME", "#{userName,jdbcType=VARCHAR}");
        }
        
        if (record.getUserSex() != null) {
            sql.VALUES("USER_SEX", "#{userSex,jdbcType=VARCHAR}");
        }
        
        if (record.getUserPhone() != null) {
            sql.VALUES("USER_PHONE", "#{userPhone,jdbcType=VARCHAR}");
        }
        
        if (record.getUserEmail() != null) {
            sql.VALUES("USER_EMAIL", "#{userEmail,jdbcType=VARCHAR}");
        }
        
        if (record.getUserAddress() != null) {
            sql.VALUES("USER_ADDRESS", "#{userAddress,jdbcType=VARCHAR}");
        }
        
        if (record.getUserRemark() != null) {
            sql.VALUES("USER_REMARK", "#{userRemark,jdbcType=VARCHAR}");
        }
        
        return sql.toString();
    }

    public String updateByPrimaryKeySelective(TUser record) {
        SQL sql = new SQL();
        sql.UPDATE("USER");
        
        if (record.getUserPassword() != null) {
            sql.SET("USER_PASSWORD = #{userPassword,jdbcType=VARCHAR}");
        }
        
        if (record.getUserName() != null) {
            sql.SET("USER_NAME = #{userName,jdbcType=VARCHAR}");
        }
        
        if (record.getUserSex() != null) {
            sql.SET("USER_SEX = #{userSex,jdbcType=VARCHAR}");
        }
        
        if (record.getUserPhone() != null) {
            sql.SET("USER_PHONE = #{userPhone,jdbcType=VARCHAR}");
        }
        
        if (record.getUserEmail() != null) {
            sql.SET("USER_EMAIL = #{userEmail,jdbcType=VARCHAR}");
        }
        
        if (record.getUserAddress() != null) {
            sql.SET("USER_ADDRESS = #{userAddress,jdbcType=VARCHAR}");
        }
        
        if (record.getUserRemark() != null) {
            sql.SET("USER_REMARK = #{userRemark,jdbcType=VARCHAR}");
        }
        
        sql.WHERE("USER_ID = #{userId,jdbcType=VARCHAR}");
        
        return sql.toString();
    }
}

5. 如果想生成帶註釋的實體類, 需要修改mybatis-generator-core-1.3.6.jar

5.1 在專案中建立實體類DefaultCommentGenerator 建立路徑一定不能錯:org/mybatis/generator/internal/DefaultCommentGenerator.java

package org.mybatis.generator.internal;

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 java.util.Set;

import static org.mybatis.generator.internal.util.StringUtility.isTrue;

/**
 * mybatis generator 註釋
 *
 * @author Klaus Allen
 * @date 2018/6/15
 */
public class DefaultCommentGenerator implements CommentGenerator {

    private Properties properties;
    private Properties systemPro;
    private boolean suppressDate;
    private boolean suppressAllComments;
    private String currentDateStr;

    public DefaultCommentGenerator() {
        super();
        properties = new Properties();
        systemPro = System.getProperties();
        suppressDate = false;
        suppressAllComments = false;
        currentDateStr = (new SimpleDateFormat("yyyy-MM-dd")).format(new Date());
    }

    @Override
    public void addJavaFileComment(CompilationUnit compilationUnit) {
        // add no file level comments by default
        return;
    }

    /**
     * Adds a suitable comment to warn users that the element was generated, and
     * when it was generated.
     */
    @Override
    public void addComment(XmlElement xmlElement) {
        return;
    }

    @Override
    public void addRootComment(XmlElement rootElement) {
        // add no document level comments by default
        return;
    }

    @Override
    public void addGeneralMethodAnnotation(Method method, IntrospectedTable introspectedTable,
                                           Set<FullyQualifiedJavaType> set) {

    }

    @Override
    public void addGeneralMethodAnnotation(Method method, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn, Set<FullyQualifiedJavaType> set) {

    }

    @Override
    public void addFieldAnnotation(Field field, IntrospectedTable introspectedTable, Set<FullyQualifiedJavaType> set) {

    }

    @Override
    public void addFieldAnnotation(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn, Set<FullyQualifiedJavaType> set) {

    }

    @Override
    public void addClassAnnotation(InnerClass innerClass, IntrospectedTable introspectedTable, Set<FullyQualifiedJavaType> set) {

    }

    @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));
    }

    /**
     * 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;
    }

    @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());
        innerClass.addJavaDocLine(" */");
    }

    @Override
    public void addEnumComment(InnerEnum innerEnum, IntrospectedTable introspectedTable) {
        if (suppressAllComments) {
            return;
        }

        StringBuilder sb = new StringBuilder();

        innerEnum.addJavaDocLine("/**");
        //      addJavadocTag(innerEnum, false);
        sb.append(" * ");
        sb.append(introspectedTable.getFullyQualifiedTable());
        innerEnum.addJavaDocLine(sb.toString());
        innerEnum.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());

        //      addJavadocTag(field, false);

        field.addJavaDocLine(" */");
    }

    @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());
        field.addJavaDocLine(" */");
    }

    @Override
    public void addModelClassComment(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {

    }

    @Override
    public void addGeneralMethodComment(Method method, IntrospectedTable introspectedTable) {
        if (suppressAllComments) {
            return;
        }
        //      method.addJavaDocLine("/**");
        //      addJavadocTag(method, false);
        //      method.addJavaDocLine(" */");
    }

    @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());

        sb.setLength(0);
        sb.append(" * @return ");
        sb.append(introspectedColumn.getActualColumnName());
        sb.append(" ");
        sb.append(introspectedColumn.getRemarks());
        method.addJavaDocLine(sb.toString());

        //      addJavadocTag(method, false);

        method.addJavaDocLine(" */");
    }

    @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());

        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());

        //      addJavadocTag(method, false);

        method.addJavaDocLine(" */");
    }

    @Override
    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());

        sb.setLength(0);
        sb.append(" * @author ");
        sb.append(systemPro.getProperty("user.name"));
        sb.append(" ");
        sb.append(currentDateStr);

        //      addJavadocTag(innerClass, markAsDoNotDelete);

        innerClass.addJavaDocLine(" */");
    }
}

5.2 用壓縮檔案開啟本地倉庫中的 mybatis-generator-core-1.3.6.jar , 把編譯好的class檔案DefaultCommentGenerator.class替換掉原來jar包中的檔案

5.3 配置檔案中

<property name="suppressAllComments" value="true"/> true 改成 false

再次生成檔案看一下效果:

package com.allen.common.entity;

import java.io.Serializable;

public class TUser implements Serializable {
    /**
     * 使用者ID
     */
    private String userId;

    /**
     * 使用者密碼
     */
    private String userPassword;

    /**
     * 使用者名稱
     */
    private String userName;

    /**
     * 使用者性別:01 男 02 女
     */
    private String userSex;

    /**
     * 使用者電話
     */
    private String userPhone;

    /**
     * 使用者郵箱
     */
    private String userEmail;

    /**
     * 使用者地址
     */
    private String userAddress;

    /**
     * 備註
     */
    private String userRemark;

    /**
     * USER
     */
    private static final long serialVersionUID = 1L;

    /**
     * 使用者ID
     * @return USER_ID 使用者ID
     */
    public String getUserId() {
        return userId;
    }

    /**
     * 使用者ID
     * @param userId 使用者ID
     */
    public void setUserId(String userId) {
        this.userId = userId == null ? null : userId.trim();
    }

    /**
     * 使用者密碼
     * @return USER_PASSWORD 使用者密碼
     */
    public String getUserPassword() {
        return userPassword;
    }

    /**
     * 使用者密碼
     * @param userPassword 使用者密碼
     */
    public void setUserPassword(String userPassword) {
        this.userPassword = userPassword == null ? null : userPassword.trim();
    }

    /**
     * 使用者名稱
     * @return USER_NAME 使用者名稱
     */
    public String getUserName() {
        return userName;
    }

    /**
     * 使用者名稱
     * @param userName 使用者名稱
     */
    public void setUserName(String userName) {
        this.userName = userName == null ? null : userName.trim();
    }

    /**
     * 使用者性別:01 男 02 女
     * @return USER_SEX 使用者性別:01 男 02 女
     */
    public String getUserSex() {
        return userSex;
    }

    /**
     * 使用者性別:01 男 02 女
     * @param userSex 使用者性別:01 男 02 女
     */
    public void setUserSex(String userSex) {
        this.userSex = userSex == null ? null : userSex.trim();
    }

    /**
     * 使用者電話
     * @return USER_PHONE 使用者電話
     */
    public String getUserPhone() {
        return userPhone;
    }

    /**
     * 使用者電話
     * @param userPhone 使用者電話
     */
    public void setUserPhone(String userPhone) {
        this.userPhone = userPhone == null ? null : userPhone.trim();
    }

    /**
     * 使用者郵箱
     * @return USER_EMAIL 使用者郵箱
     */
    public String getUserEmail() {
        return userEmail;
    }

    /**
     * 使用者郵箱
     * @param userEmail 使用者郵箱
     */
    public void setUserEmail(String userEmail) {
        this.userEmail = userEmail == null ? null : userEmail.trim();
    }

    /**
     * 使用者地址
     * @return USER_ADDRESS 使用者地址
     */
    public String getUserAddress() {
        return userAddress;
    }

    /**
     * 使用者地址
     * @param userAddress 使用者地址
     */
    public void setUserAddress(String userAddress) {
        this.userAddress = userAddress == null ? null : userAddress.trim();
    }

    /**
     * 備註
     * @return USER_REMARK 備註
     */
    public String getUserRemark() {
        return userRemark;
    }

    /**
     * 備註
     * @param userRemark 備註
     */
    public void setUserRemark(String userRemark) {
        this.userRemark = userRemark == null ? null : userRemark.trim();
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", userId=").append(userId);
        sb.append(", userPassword=").append(userPassword);
        sb.append(", userName=").append(userName);
        sb.append(", userSex=").append(userSex);
        sb.append(", userPhone=").append(userPhone);
        sb.append(", userEmail=").append(userEmail);
        sb.append(", userAddress=").append(userAddress);
        sb.append(", userRemark=").append(userRemark);
        sb.append(", serialVersionUID=").append(serialVersionUID);
        sb.append("]");
        return sb.toString();
    }
}

也可以直接下載我改好的jar包

https://download.csdn.net/download/qigc_0529/10480965

如果可以用, 就點個贊嘍!


相關推薦

MybatisGenerator自動生成程式碼 (定義註釋)

說明: 適用於maven專案, mysql/oracle資料庫, 開發工具: IDEA1.配置generatorConfig.xml<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfi

IntelliJ IDEA設定類程式碼模板定義(註釋)

編輯程式碼的時候一些模板不盡人意,設定一下類生成模板File -- Settings -- Editor -- Code Style -- File and Code Templates主要是修改了註釋/*** ${DESCRIPTION}* @author * @creat

自動規避程式碼陷阱——定義Lint規則

一、Lint是什麼? Lint 是一款靜態程式碼分析工具,能檢查安卓專案的原始檔,從而查詢潛在的程式錯誤以及優化提升的方案。 當你忘記在Toast上呼叫show()時,Lint 就會提醒你。它也會確保你的ImageView中添加了contentDescrip

maven+mybatis+mybatis-generator+sql server 2005自動生成程式碼,加上定義分頁外掛和批量插入更新外掛

第一步:準備需要的jar包。由於maven只要配置pom.xml就可以從倉庫下載jar包。因此我們首先配置pom.xml。 注意com.microsoft.sqlserver需要自己加入maven倉庫的。 <dependencies> ......

定義Mybatis自動生成程式碼規則

前言        大家都清楚mybatis-generate-core 這個工程提供了獲取表資訊到生成model、dao、xml這三層程式碼的一個實現,但是這往往有一個痛點,比如需求來了,某個表需要增加欄位,肯定需要重新執行mybatis自動生成的指令碼,但是會去覆蓋

mybatis generator為實體類生成定義註釋(讀取數據庫字段的註釋添加到實體類,不修改源碼)

super() .cn setter www. nts art pca target private 我們都知道mybatis generator自動生成的註釋沒什麽實際作用,而且還增加了代碼量。如果能將註釋從數據庫中撈取到,不僅能很大程度上增加代碼的可讀性,而且減少了後期

【工具篇】Android studio 定義註釋快速生成

前言 團隊協作中,儘量保證各自程式碼自己維護。這樣既能保證程式碼編寫者在邏輯上的一慣性,也能避免修改不熟悉的程式碼而引起bug問題。但即使是這樣的規避,也依然無法避免程式設計師之間程式碼的混合。所以,針對在一個類中,產出幾個人同時需要添注的程式碼。最好能做程式碼註釋的區分。這樣為長時間後的程式碼

Mybatis Generator自動生成JavaEntity中文註釋和註解[Maven]工程

mybatis-generator是一個很好的資料庫逆向生成Java實體的外掛,但不能新增中文註釋和註解,如果我們想生成下面這樣一個UserEntity,那麼就只能自己動手擴充套件一下mybatis-generator。 package com.domain.entity; import com

mybatis-generator定義註釋生成

    最近做的專案發現沒有中文註釋,故查詢資料,特此記錄。 本文所用的是基於mybatis-generator 1.3.2版本來完成的。 mybatis-generator 自動生成的程式碼註釋是很反人類的,通常我們在使用的時候都是按照如下設定關閉註釋: &

mybatis generator為實體類生成定義註釋(讀取資料庫欄位的註釋新增到實體類,不修改原始碼)

我們都知道mybatis generator自動生成的註釋沒什麼實際作用,而且還增加了程式碼量。如果能將註釋從資料庫中撈取到,不僅能很大程度上增加程式碼的可讀性,而且減少了後期手動加註釋的工作量。 1、首先定義註釋生成外掛 package com.cmbc.datapla

eclipse生成定義註釋

操作步驟和大家分享一下:window -> preference -> java->code  style -> code  template -> Comments ,你點開這個選項,下面的很多選項就可以換成自己定義的了,操作示意圖: 到

SAP 插入定義註釋或者程式碼模板

前言:在程式開發過程中,添加註釋一個良好的習慣,尤其是當我們修改了一些程式碼,更需要註明一些基本的資訊。在SAP中寫註釋的話,可以事先儲存一定的程式碼模板,然後在用的時候快速插入就好了,下面給出一個示例

mybatis-generator程式碼生成(支援定義型別轉換)

<?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"

iOS xcode 生成 定義註釋和API

//聯絡人:石虎 QQ:1224614774 暱稱:嗡嘛呢叭咪哄 一、概念  Objective-C寫程式碼時有三種可能的方法來標示一個註釋文件區域:   1. 把你的註釋包含在/** –

iOS 註釋方法大全 程式碼塊加快捷鍵定義註釋

註釋規範       良好的編碼規範是程式設計師必備的素質,編碼中的程式碼註釋尤為重要,健全的程式碼註釋可以提高程式碼可讀性和維護性,不僅為了標識此塊程式碼的含義,很多時候包含了對業務邏輯的解釋,專案中難免有邏輯複雜之處,不加註釋的程式碼,數日後自己看都會覺得陌生,更不

如何在Eclipse中如何自動添加註釋定義註釋風格

背景簡介 豐富的註釋和良好的程式碼規範,對於程式碼的閱讀性和可維護性起著至關重要的作用。幾乎每個公司對這的要求還是比較嚴格的,往往會形成自己的一套編碼規範。但是再實施過程中,如果全靠手動完成,不僅效率低下,還難以保證真正的符合規範。所以結合IDE環境,自動

一分鐘你學會利用mybatis-generator自動生成程式碼

目錄 一、MyBatis Generator簡介 二、使用方式 三、實戰 之前的文章《SpringBoot系列-整合Mybatis(XML配置方式)》介紹了XML配置方式整合的過程,本文介紹下

使用MyBatisGenerator自動生成Mybatis的相關代碼

args pool mage ransac http manage build values 令行 一、構建一個環境: 1. 首先創建一個表: Sql代碼 CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(

idea 設置定義註釋

下拉框 cnblogs markdown logs 註意 就會 自定義 replace target 詳細:idea如何設置類頭註釋和方法註釋

android打包生成apk時定義文件名版本號。定義項目字段等等

field col each deb 自定義 文件名 all != null 早期的AS2.0版本左右中這樣配置: app---->build.gradle中設置 applicationVariants.all { variant ->