Browse Source

!7 fix postgrepsql jsonp support
Merge pull request !7 from 天赐/fix-postgrepsql-jsonb-type-support

tanghc 3 years ago
parent
commit
507f2a8837

+ 9 - 0
gen/src/main/java/com/gitee/gen/gen/TableDefinition.java

@@ -95,6 +95,15 @@ public class TableDefinition {
         return false;
     }
 
+    public boolean getHasJsonbField() {
+        for (ColumnDefinition definition : columnDefinitions) {
+            if ("jsonb".equals(definition.getType())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     /**
      * 获取主键信息
      *

+ 1 - 0
gen/src/main/java/com/gitee/gen/gen/TypeEnum.java

@@ -31,6 +31,7 @@ public enum TypeEnum {
 
     BLOB("blob"),
 
+    JSONB("jsonb")
 
     ;
     private final String type;

+ 5 - 0
gen/src/main/java/com/gitee/gen/gen/TypeFormatter.java

@@ -39,6 +39,9 @@ public interface TypeFormatter {
         if (isDecimal(columnType)) {
             return TypeEnum.DECIMAL.getType();
         }
+        if(isJsonb(columnType)){
+            return TypeEnum.JSONB.getType();
+        }
         if (isVarchar(columnType)) {
             return TypeEnum.VARCHAR.getType();
         }
@@ -48,6 +51,7 @@ public interface TypeFormatter {
         if (isBlob(columnType)) {
             return TypeEnum.BLOB.getType();
         }
+
         return TypeEnum.VARCHAR.getType();
     }
 
@@ -72,4 +76,5 @@ public interface TypeFormatter {
     boolean isVarchar(String columnType);
     boolean isDatetime(String columnType);
     boolean isBlob(String columnType);
+    boolean isJsonb(String columnType);
 }

+ 4 - 1
gen/src/main/java/com/gitee/gen/gen/converter/JavaColumnTypeConverter.java

@@ -25,6 +25,7 @@ public class JavaColumnTypeConverter implements ColumnTypeConverter {
         TYPE_MAP.put(TypeEnum.VARCHAR.getType(), "string");
         TYPE_MAP.put(TypeEnum.DATETIME.getType(), "Date");
         TYPE_MAP.put(TypeEnum.BLOB.getType(), "byte[]");
+        TYPE_MAP.put(TypeEnum.JSONB.getType(), "Map<String, Object>");
 
         TYPE_BOX_MAP.put(TypeEnum.BIT.getType(), "Boolean");
         TYPE_BOX_MAP.put(TypeEnum.BOOLEAN.getType(), "Boolean");
@@ -38,11 +39,13 @@ public class JavaColumnTypeConverter implements ColumnTypeConverter {
         TYPE_BOX_MAP.put(TypeEnum.VARCHAR.getType(), "String");
         TYPE_BOX_MAP.put(TypeEnum.DATETIME.getType(), "Date");
         TYPE_BOX_MAP.put(TypeEnum.BLOB.getType(), "Byte[]");
+        TYPE_BOX_MAP.put(TypeEnum.JSONB.getType(), "Map<String, Object>");
     }
 
     @Override
     public String convertType(String type) {
-        return TYPE_MAP.getOrDefault(type, "String");
+        String string = TYPE_MAP.getOrDefault(type, "String");
+        return string;
     }
 
     @Override

+ 5 - 0
gen/src/main/java/com/gitee/gen/gen/mysql/MySqlTypeFormatter.java

@@ -69,4 +69,9 @@ public class MySqlTypeFormatter implements TypeFormatter {
     public boolean isBlob(String columnType) {
         return contains(Collections.singletonList("blob"), columnType);
     }
+
+    @Override
+    public boolean isJsonb(String columnType) {
+        return false;
+    }
 }

+ 5 - 0
gen/src/main/java/com/gitee/gen/gen/oracle/OracleTypeFormatter.java

@@ -69,4 +69,9 @@ public class OracleTypeFormatter implements TypeFormatter {
     public boolean isBlob(String columnType) {
         return contains(Collections.singletonList("blob"), columnType);
     }
+
+    @Override
+    public boolean isJsonb(String columnType) {
+        return false;
+    }
 }

+ 5 - 0
gen/src/main/java/com/gitee/gen/gen/postgresql/PostgreSqlTypeFormatter.java

@@ -69,4 +69,9 @@ public class PostgreSqlTypeFormatter implements TypeFormatter {
     public boolean isBlob(String columnType) {
         return contains(Collections.singletonList("blob"), columnType);
     }
+
+    @Override
+    public boolean isJsonb(String columnType) {
+        return contains(Collections.singletonList("jsonb"), columnType);
+    }
 }

+ 5 - 0
gen/src/main/java/com/gitee/gen/gen/sqlserver/SqlServerTypeFormatter.java

@@ -69,4 +69,9 @@ public class SqlServerTypeFormatter implements TypeFormatter {
     public boolean isBlob(String columnType) {
         return contains(Arrays.asList("blob", "binary", "varbinary"), columnType);
     }
+
+    @Override
+    public boolean isJsonb(String columnType) {
+        return false;
+    }
 }

+ 9 - 9
gen/src/main/resources/application.properties

@@ -1,10 +1,10 @@
 spring.application.name=gen
 server.port=6969
 
-spring.datasource.driver-class-name=org.sqlite.JDBC
-spring.datasource.url=jdbc:sqlite:gen.db
-spring.datasource.username=
-spring.datasource.password=
+#spring.datasource.driver-class-name=org.sqlite.JDBC
+#spring.datasource.url=jdbc:sqlite:gen.db
+#spring.datasource.username=
+#spring.datasource.password=
 
 # ==========================================
 # 默认使用sqlite数据库,如果要改成mysql,步骤如下:
@@ -13,10 +13,10 @@ spring.datasource.password=
 #   3. 执行mysql.sql中的内容
 # ==========================================
 # mysql
-#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
-#spring.datasource.url=jdbc:mysql://localhost:3306/gen?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
-#spring.datasource.username=root
-#spring.datasource.password=root
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+spring.datasource.url=jdbc:mysql://localhost:3306/gen?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
+spring.datasource.username=root
+spring.datasource.password=123456
 
 mybatis.mapper-locations=classpath:mybatis/*.xml
 # 下划线格式转换成驼峰格式
@@ -24,6 +24,6 @@ mybatis.configuration.map-underscore-to-camel-case=true
 
 # 格式化xml代码,默认false
 # 开启后生成速度会稍微慢一点
-gen.format-xml=false
+gen.format-xml=true
 
 logging.file.path=log