Kaynağa Gözat

fixed github issues/936

hubin 6 yıl önce
ebeveyn
işleme
351fb98a02

+ 3 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/handlers/MetaObjectHandler.java

@@ -37,6 +37,7 @@ public interface MetaObjectHandler {
 
     /**
      * 乐观锁常量
+     *
      * @deprecated 3.1.1 {@link Constants#MP_OPTLOCK_ET_ORIGINAL}
      */
     String MP_OPTLOCK_ET_ORIGINAL = "MP_OPTLOCK_ET_ORIGINAL";
@@ -169,7 +170,8 @@ public interface MetaObjectHandler {
             : TableInfoHelper.getTableInfo(metaObject.getOriginalObject().getClass());
         if (Objects.nonNull(tableInfo)) {
             Optional<TableFieldInfo> first = tableInfo.getFieldList().stream()
-                .filter(e -> e.getProperty().equals(fieldName) && e.getPropertyType().isAssignableFrom(fieldVal.getClass()))//v_3.1.1+ 设置子类的值也可以通过
+                //v_3.1.1+ 设置子类的值也可以通过
+                .filter(e -> e.getProperty().equals(fieldName) && e.getPropertyType().isAssignableFrom(fieldVal.getClass()))
                 .findFirst();
             if (first.isPresent()) {
                 FieldFill fill = first.get().getFieldFill();

+ 3 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/Constants.java

@@ -100,7 +100,9 @@ public interface Constants extends StringPool {
      */
     String WHERE = "WHERE";
 
-    //乐观锁字段
+    /**
+     * 乐观锁字段
+     */
     String MP_OPTLOCK_VERSION_ORIGINAL = "MP_OPTLOCK_VERSION_ORIGINAL";
     String MP_OPTLOCK_VERSION_COLUMN = "MP_OPTLOCK_VERSION_COLUMN";
     String MP_OPTLOCK_ET_ORIGINAL = "MP_OPTLOCK_ET_ORIGINAL";

+ 4 - 0
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/StrategyConfig.java

@@ -104,6 +104,10 @@ public class StrategyConfig {
      */
     @Setter(AccessLevel.NONE)
     private String[] exclude = null;
+    /**
+     * 实体是否生成 serialVersionUID
+     */
+    private boolean entitySerialVersionUID = true;
     /**
      * 【实体】是否生成字段常量(默认 false)<br>
      * -----------------------------------<br>

+ 1 - 0
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/engine/AbstractTemplateEngine.java

@@ -220,6 +220,7 @@ public abstract class AbstractTemplateEngine {
         objectMap.put("baseResultMap", globalConfig.isBaseResultMap());
         objectMap.put("baseColumnList", globalConfig.isBaseColumnList());
         objectMap.put("entity", tableInfo.getEntityName());
+        objectMap.put("entitySerialVersionUID", config.getStrategyConfig().isEntitySerialVersionUID());
         objectMap.put("entityColumnConstant", config.getStrategyConfig().isEntityColumnConstant());
         objectMap.put("entityBuilderModel", config.getStrategyConfig().isEntityBuilderModel());
         objectMap.put("entityLombokModel", config.getStrategyConfig().isEntityLombokModel());

+ 2 - 0
mybatis-plus-generator/src/main/resources/templates/entity.java.btl

@@ -42,7 +42,9 @@ public class ${entity} extends Model<${entity}> {
 public class ${entity} implements Serializable {
 <% } %>
 
+<% if(entitySerialVersionUID){ %>
     private static final long serialVersionUID = 1L;
+<% } %>
 <% /** -----------BEGIN 字段循环遍历----------- **/ %>
 <% for(field in table.fields){ %>
     <%

+ 50 - 48
mybatis-plus-generator/src/main/resources/templates/entity.java.ftl

@@ -1,50 +1,52 @@
 package ${package.Entity};
 
 <#list table.importPackages as pkg>
-import ${pkg};
+    import ${pkg};
 </#list>
 <#if swagger2>
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
+    import io.swagger.annotations.ApiModel;
+    import io.swagger.annotations.ApiModelProperty;
 </#if>
 <#if entityLombokModel>
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
+    import lombok.Data;
+    import lombok.EqualsAndHashCode;
+    import lombok.experimental.Accessors;
 </#if>
 
 /**
- * <p>
- * ${table.comment!}
- * </p>
- *
- * @author ${author}
- * @since ${date}
- */
+* <p>
+    * ${table.comment!}
+    * </p>
+*
+* @author ${author}
+* @since ${date}
+*/
 <#if entityLombokModel>
-@Data
+    @Data
     <#if superEntityClass??>
-@EqualsAndHashCode(callSuper = true)
+        @EqualsAndHashCode(callSuper = true)
     <#else>
-@EqualsAndHashCode(callSuper = false)
+        @EqualsAndHashCode(callSuper = false)
     </#if>
-@Accessors(chain = true)
+    @Accessors(chain = true)
 </#if>
 <#if table.convert>
-@TableName("${table.name}")
+    @TableName("${table.name}")
 </#if>
 <#if swagger2>
-@ApiModel(value="${entity}对象", description="${table.comment!}")
+    @ApiModel(value="${entity}对象", description="${table.comment!}")
 </#if>
 <#if superEntityClass??>
-public class ${entity} extends ${superEntityClass}<#if activeRecord><${entity}></#if> {
+    public class ${entity} extends ${superEntityClass}<#if activeRecord><${entity}></#if> {
 <#elseif activeRecord>
-public class ${entity} extends Model<${entity}> {
+    public class ${entity} extends Model<${entity}> {
 <#else>
-public class ${entity} implements Serializable {
+    public class ${entity} implements Serializable {
 </#if>
 
+<#if entitySerialVersionUID>
     private static final long serialVersionUID = 1L;
+</#if>
 <#-- ----------  BEGIN 字段循环遍历  ---------->
 <#list table.fields as field>
     <#if field.keyFlag>
@@ -52,41 +54,41 @@ public class ${entity} implements Serializable {
     </#if>
 
     <#if field.comment!?length gt 0>
-    <#if swagger2>
-    @ApiModelProperty(value = "${field.comment}")
-    <#else>
-    /**
-     * ${field.comment}
-     */
-    </#if>
+        <#if swagger2>
+            @ApiModelProperty(value = "${field.comment}")
+        <#else>
+            /**
+            * ${field.comment}
+            */
+        </#if>
     </#if>
     <#if field.keyFlag>
     <#-- 主键 -->
         <#if field.keyIdentityFlag>
-    @TableId(value = "${field.name}", type = IdType.AUTO)
+            @TableId(value = "${field.name}", type = IdType.AUTO)
         <#elseif idType??>
-    @TableId(value = "${field.name}", type = IdType.${idType})
+            @TableId(value = "${field.name}", type = IdType.${idType})
         <#elseif field.convert>
-    @TableId("${field.name}")
+            @TableId("${field.name}")
         </#if>
     <#-- 普通字段 -->
     <#elseif field.fill??>
     <#-- -----   存在字段填充设置   ----->
         <#if field.convert>
-    @TableField(value = "${field.name}", fill = FieldFill.${field.fill})
+            @TableField(value = "${field.name}", fill = FieldFill.${field.fill})
         <#else>
-    @TableField(fill = FieldFill.${field.fill})
+            @TableField(fill = FieldFill.${field.fill})
         </#if>
     <#elseif field.convert>
-    @TableField("${field.name}")
+        @TableField("${field.name}")
     </#if>
 <#-- 乐观锁注解 -->
     <#if (versionFieldName!"") == field.name>
-    @Version
+        @Version
     </#if>
 <#-- 逻辑删除注解 -->
     <#if (logicDeleteFieldName!"") == field.name>
-    @TableLogic
+        @TableLogic
     </#if>
     private ${field.propertyType} ${field.propertyName};
 </#list>
@@ -99,26 +101,26 @@ public class ${entity} implements Serializable {
         <#else>
             <#assign getprefix="get"/>
         </#if>
-    public ${field.propertyType} ${getprefix}${field.capitalName}() {
+        public ${field.propertyType} ${getprefix}${field.capitalName}() {
         return ${field.propertyName};
-    }
+        }
 
         <#if entityBuilderModel>
-    public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
+            public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
         <#else>
-    public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
+            public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
         </#if>
         this.${field.propertyName} = ${field.propertyName};
         <#if entityBuilderModel>
-        return this;
+            return this;
         </#if>
-    }
+        }
     </#list>
 </#if>
 
 <#if entityColumnConstant>
     <#list table.fields as field>
-    public static final String ${field.name?upper_case} = "${field.name}";
+        public static final String ${field.name?upper_case} = "${field.name}";
 
     </#list>
 </#if>
@@ -136,15 +138,15 @@ public class ${entity} implements Serializable {
 <#if !entityLombokModel>
     @Override
     public String toString() {
-        return "${entity}{" +
+    return "${entity}{" +
     <#list table.fields as field>
         <#if field_index==0>
-        "${field.propertyName}=" + ${field.propertyName} +
+            "${field.propertyName}=" + ${field.propertyName} +
         <#else>
-        ", ${field.propertyName}=" + ${field.propertyName} +
+            ", ${field.propertyName}=" + ${field.propertyName} +
         </#if>
     </#list>
-        "}";
+    "}";
     }
 </#if>
 }

+ 92 - 89
mybatis-plus-generator/src/main/resources/templates/entity.java.vm

@@ -1,16 +1,17 @@
-package ${package.Entity};
+package ${package.Entity}import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
 
+;
 #foreach($pkg in ${table.importPackages})
-import ${pkg};
+    ${pkg}
+;
 #end
 #if(${swagger2})
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
 #end
 #if(${entityLombokModel})
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
 #end
 
 /**
@@ -23,129 +24,131 @@ import lombok.experimental.Accessors;
  */
 #if(${entityLombokModel})
 @Data
-#if(${superEntityClass})
-@EqualsAndHashCode(callSuper = true)
-#else
-@EqualsAndHashCode(callSuper = false)
-#end
+    #if(${superEntityClass})
+    @EqualsAndHashCode(callSuper = true)
+    #else
+    @EqualsAndHashCode(callSuper = false)
+    #end
 @Accessors(chain = true)
 #end
 #if(${table.convert})
 @TableName("${table.name}")
 #end
 #if(${swagger2})
-@ApiModel(value="${entity}对象", description="$!{table.comment}")
+@ApiModel(value = "${entity}对象", description = "$!{table.comment}")
 #end
 #if(${superEntityClass})
 public class ${entity} extends ${superEntityClass}#if(${activeRecord})<${entity}>#end {
 #elseif(${activeRecord})
 public class ${entity} extends Model<${entity}> {
 #else
-public class ${entity} implements Serializable {
+public class ${entity} implements Serializable{
 #end
 
-    private static final long serialVersionUID = 1L;
+#if(${entitySerialVersionUID})
+private static final long serialVersionUID=1L;
+#end
 ## ----------  BEGIN 字段循环遍历  ----------
 #foreach($field in ${table.fields})
 
-#if(${field.keyFlag})
-#set($keyPropertyName=${field.propertyName})
-#end
-#if("$!field.comment" != "")
-#if(${swagger2})
-    @ApiModelProperty(value = "${field.comment}")
-#else
-    /**
-     * ${field.comment}
-     */
-#end
-#end
-#if(${field.keyFlag})
-## 主键
-#if(${field.keyIdentityFlag})
-    @TableId(value = "${field.name}", type = IdType.AUTO)
-#elseif(!$null.isNull(${idType}) && "$!idType" != "")
-    @TableId(value = "${field.name}", type = IdType.${idType})
-#elseif(${field.convert})
-    @TableId("${field.name}")
-#end
-## 普通字段
-#elseif(${field.fill})
-## -----   存在字段填充设置   -----
-#if(${field.convert})
-    @TableField(value = "${field.name}", fill = FieldFill.${field.fill})
-#else
-    @TableField(fill = FieldFill.${field.fill})
-#end
-#elseif(${field.convert})
+    #if(${field.keyFlag})
+        #set($keyPropertyName=${field.propertyName})
+    #end
+    #if("$!field.comment" != "")
+        #if(${swagger2})
+        @ApiModelProperty(value = "${field.comment}")
+        #else
+        /**
+         * ${field.comment}
+         */
+        #end
+    #end
+    #if(${field.keyFlag})
+    ## 主键
+        #if(${field.keyIdentityFlag})
+        @TableId(value = "${field.name}", type = IdType.AUTO)
+        #elseif(!$null.isNull(${idType}) && "$!idType" != "")
+        @TableId(value = "${field.name}", type = IdType.${idType})
+        #elseif(${field.convert})
+        @TableId("${field.name}")
+        #end
+    ## 普通字段
+    #elseif(${field.fill})
+    ## -----   存在字段填充设置   -----
+        #if(${field.convert})
+        @TableField(value = "${field.name}", fill = FieldFill.${field.fill})
+        #else
+        @TableField(fill = FieldFill.${field.fill})
+        #end
+    #elseif(${field.convert})
     @TableField("${field.name}")
-#end
+    #end
 ## 乐观锁注解
-#if(${versionFieldName}==${field.name})
+    #if(${versionFieldName}==${field.name})
     @Version
-#end
+    #end
 ## 逻辑删除注解
-#if(${logicDeleteFieldName}==${field.name})
+    #if(${logicDeleteFieldName}==${field.name})
     @TableLogic
-#end
-    private ${field.propertyType} ${field.propertyName};
+    #end
+private ${field.propertyType} ${field.propertyName};
 #end
 ## ----------  END 字段循环遍历  ----------
 
 #if(!${entityLombokModel})
-#foreach($field in ${table.fields})
-#if(${field.propertyType.equals("boolean")})
-#set($getprefix="is")
-#else
-#set($getprefix="get")
-#end
+    #foreach($field in ${table.fields})
+        #if(${field.propertyType.equals("boolean")})
+            #set($getprefix="is")
+        #else
+            #set($getprefix="get")
+        #end
 
-    public ${field.propertyType} ${getprefix}${field.capitalName}() {
+    public ${field.propertyType} ${getprefix}${field.capitalName}(){
         return ${field.propertyName};
-    }
+        }
 
-#if(${entityBuilderModel})
-    public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
-#else
-    public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
-#end
+        #if(${entityBuilderModel})
+        public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}){
+        #else
+        public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
+        #end
         this.${field.propertyName} = ${field.propertyName};
-#if(${entityBuilderModel})
-        return this;
-#end
-    }
-#end
+        #if(${entityBuilderModel})
+            return this;
+        #end
+        }
+    #end
 #end
 
 #if(${entityColumnConstant})
-#foreach($field in ${table.fields})
-    public static final String ${field.name.toUpperCase()} = "${field.name}";
+    #foreach($field in ${table.fields})
+    public static final String ${field.name.toUpperCase()} ="${field.name}";
 
-#end
+    #end
 #end
 #if(${activeRecord})
-    @Override
-    protected Serializable pkVal() {
-#if(${keyPropertyName})
+@Override
+protected Serializable pkVal(){
+    #if(${keyPropertyName})
         return this.${keyPropertyName};
-#else
+    #else
         return null;
-#end
+    #end
     }
 
 #end
 #if(!${entityLombokModel})
-    @Override
-    public String toString() {
-        return "${entity}{" +
-#foreach($field in ${table.fields})
-#if($!{foreach.index}==0)
-        "${field.propertyName}=" + ${field.propertyName} +
-#else
-        ", ${field.propertyName}=" + ${field.propertyName} +
-#end
-#end
-        "}";
+@Override
+public String toString() {
+    return "${entity}{" +
+    #foreach($field in ${table.fields})
+        #if($!{foreach.index}==0)
+            "${field.propertyName}=" + ${field.propertyName} +
+        #else
+            ", ${field.propertyName}=" + ${field.propertyName} +
+        #end
+    #end
+    "}";
     }
 #end
-}
+    }