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