From 275968d39bab621c587334be3bbc0351168b922d Mon Sep 17 00:00:00 2001 From: zack Date: Mon, 24 Jul 2023 23:17:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9ColumnConfig=E7=9A=84property?= =?UTF-8?q?Type=E5=AD=97=E6=AE=B5=E7=B1=BB=E5=9E=8B=E4=B8=BAString?= =?UTF-8?q?=EF=BC=8C=E4=BD=BF=E5=85=B6=E6=94=AF=E6=8C=81=E5=8E=9F=E5=A7=8B?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=20ColumnConfig=E6=B7=BB=E5=8A=A0propertyDefa?= =?UTF-8?q?ultValue=E5=AD=97=E6=AE=B5=EF=BC=8C=E6=94=AF=E6=8C=81=E4=B8=BA?= =?UTF-8?q?=E5=AE=9E=E4=BD=93=E7=B1=BB=E7=9A=84=E5=B1=9E=E6=80=A7=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E9=BB=98=E8=AE=A4=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../codegen/config/ColumnConfig.java | 21 +++++-- .../mybatisflex/codegen/entity/Column.java | 62 ++++++++++++------- .../main/resources/templates/enjoy/entity.tpl | 7 ++- 3 files changed, 60 insertions(+), 30 deletions(-) diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/ColumnConfig.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/ColumnConfig.java index 0c07f99b..9c2e4598 100644 --- a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/ColumnConfig.java +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/ColumnConfig.java @@ -61,9 +61,14 @@ public class ColumnConfig implements Serializable { */ private JdbcType jdbcType; /** - * 属性的类型。 + * 属性的类型。原始类型直接写类型名称:int/long/float/double/boolean,对象类型请写对应类的全限定名: */ - private Class propertyType; + private String propertyType; + + /** + * 属性的默认值 + */ + private String propertyDefaultValue; /** * 自定义 TypeHandler。 @@ -212,11 +217,19 @@ public class ColumnConfig implements Serializable { this.tenantId = tenantId; } - public Class getPropertyType() { + public String getPropertyType() { return propertyType; } - public void setPropertyType(Class propertyType) { + public void setPropertyType(String propertyType) { this.propertyType = propertyType; } + + public String getPropertyDefaultValue() { + return propertyDefaultValue; + } + + public void setPropertyDefaultValue(String propertyDefaultValue) { + this.propertyDefaultValue = propertyDefaultValue; + } } diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/entity/Column.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/entity/Column.java index 2adc0e00..e56c67f4 100644 --- a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/entity/Column.java +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/entity/Column.java @@ -22,7 +22,9 @@ import com.mybatisflex.codegen.config.ColumnConfig; import com.mybatisflex.core.util.StringUtil; import java.util.ArrayList; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; /** * 数据库表里面的列信息。 @@ -92,12 +94,22 @@ public class Column { return propertyType; } + public String getPropertyDefaultValue() { + return columnConfig.getPropertyDefaultValue(); + } + public String getPropertySimpleType() { - if (columnConfig.getPropertyType()!=null){ - return columnConfig.getPropertyType().getSimpleName(); - } - else { - return propertyType.substring(propertyType.lastIndexOf(".") + 1); + try { + if (columnConfig.getPropertyType() != null) { + if (!columnConfig.getPropertyType().contains(".")) { + return columnConfig.getPropertyType(); + } + return Class.forName(columnConfig.getPropertyType()).getSimpleName(); + } else { + return propertyType.substring(propertyType.lastIndexOf(".") + 1); + } + } catch (Throwable e) { + throw new RuntimeException(e); } } @@ -276,39 +288,32 @@ public class Column { } } - public List getImportClasses() { - List importClasses = new ArrayList<>(); - - //lang 包不需要显式导入 - if (!propertyType.startsWith("java.lang.") - && !"byte[]".equals(propertyType) - && !"Byte[]".equals(propertyType) - ) { - importClasses.add(propertyType); - } + public Set getImportClasses() { + Set importClasses = new LinkedHashSet<>(); + addImportClass(importClasses, propertyType); if (isPrimaryKey || (columnConfig != null && columnConfig.isPrimaryKey())) { - importClasses.add(Id.class.getName()); + addImportClass(importClasses, Id.class.getName()); if (isAutoIncrement || (columnConfig != null && columnConfig.getKeyType() != null)) { - importClasses.add(KeyType.class.getName()); + addImportClass(importClasses, KeyType.class.getName()); } } if (columnConfig != null) { - if (columnConfig.getPropertyType() !=null){ - importClasses.add(columnConfig.getPropertyType().getName()); + if (columnConfig.getPropertyType() != null) { + addImportClass(importClasses, columnConfig.getPropertyType()); } if (columnConfig.getMask() != null) { - importClasses.add(ColumnMask.class.getName()); + addImportClass(importClasses, ColumnMask.class.getName()); } if (columnConfig.getJdbcType() != null) { - importClasses.add("org.apache.ibatis.type.JdbcType"); + addImportClass(importClasses, "org.apache.ibatis.type.JdbcType"); } if (columnConfig.getTypeHandler() != null) { - importClasses.add(columnConfig.getTypeHandler().getName()); + addImportClass(importClasses, columnConfig.getTypeHandler().getName()); } if (columnConfig.getOnInsertValue() != null @@ -321,13 +326,24 @@ public class Column { || Boolean.TRUE.equals(columnConfig.getTenantId()) || needGenColumnAnnotation ) { - importClasses.add(com.mybatisflex.annotation.Column.class.getName()); + addImportClass(importClasses, com.mybatisflex.annotation.Column.class.getName()); } } return importClasses; } + /** + * importClass为类的全限定名 + */ + private static void addImportClass(Set importClasses, String importClass) { + // 不包含“.”则认为是原始类型,不需要import + // lang包不需要显式导入 + if (importClass.contains(".") && !importClass.startsWith("java.lang.")) { + importClasses.add(importClass); + } + } + public boolean isDefaultColumn() { if (columnConfig == null) { return true; diff --git a/mybatis-flex-codegen/src/main/resources/templates/enjoy/entity.tpl b/mybatis-flex-codegen/src/main/resources/templates/enjoy/entity.tpl index 12966c13..cb79e4e5 100644 --- a/mybatis-flex-codegen/src/main/resources/templates/enjoy/entity.tpl +++ b/mybatis-flex-codegen/src/main/resources/templates/enjoy/entity.tpl @@ -40,6 +40,7 @@ import lombok.NoArgsConstructor; #end #(table.buildTableAnnotation()) public class #(table.buildEntityClassName())#(table.buildExtends())#(table.buildImplements()) { + #for(column : table.columns) #set(comment = javadocConfig.formatColumnComment(column.comment)) #if(isNotBlank(comment)) @@ -57,7 +58,8 @@ public class #(table.buildEntityClassName())#(table.buildExtends())#(table.build #if(withSwagger && swaggerVersion.getName() == "DOC") @Schema(description = "#(column.comment)") #end - private #(column.propertySimpleType) #(column.property); + private #(column.propertySimpleType) #(column.property)#if(isNotBlank(column.propertyDefaultValue)) = #(column.propertyDefaultValue)#end; + #end #if(!withLombok) @@ -71,5 +73,4 @@ public class #(table.buildEntityClassName())#(table.buildExtends())#(table.build } #end -#end -} +#end}