xiongzhu vor 7 Jahren
Ursprung
Commit
f663ce884a
1 geänderte Dateien mit 25 neuen und 24 gelöschten Zeilen
  1. 25 24
      src/main/java/com/izouma/codegenerator/TableGenerator.java

+ 25 - 24
src/main/java/com/izouma/codegenerator/TableGenerator.java

@@ -88,15 +88,16 @@ public class TableGenerator {
 
             Statement stmt = conn.createStatement();
 
-            String sql = "DROP TABLE IF EXISTS " + model.getTableName() + "; create table " + model.getTableName() + "(";
+            StringBuilder sql = new StringBuilder("DROP TABLE IF EXISTS " + model.getTableName() + "; create table " + model.getTableName() + "(");
 
             if ("SqlServer".equals(model.getDataBaseType())) {
-                sql = "IF EXISTS (SELECT * FROM sys.objects where name = '" + model.getTableName() + "')DROP TABLE " + model.getTableName()
-                        + "; create table " + model.getTableName() + "(";
+                sql = new StringBuilder("IF EXISTS (SELECT * FROM sys.objects where name = '" + model.getTableName() + "')DROP TABLE " + model.getTableName()
+                        + "; create table " + model.getTableName() + "(");
             }
 
-
+            List<String> fieldSqlList = new ArrayList<>();
             for (TableField tableField : model.getFields()) {
+                StringBuilder fieldSql = new StringBuilder();
                 if (tableField.getLength() == null) {
                     switch (tableField.getJdbcType()) {
                         case "int":
@@ -128,68 +129,70 @@ public class TableGenerator {
 
                 if ("Mysql".equals(model.getDataBaseType())) {
 
-                    sql += " " + tableField.getName() + " " + tableField.getJdbcType() + "(" + tableField.getLength() + ")";
+                    fieldSql.append(" ").append(tableField.getName()).append(" ").append(tableField.getJdbcType()).append("(").append(tableField.getLength()).append(")");
 
                 } else if ("SqlServer".equals(model.getDataBaseType())) {
                     if ("int".equals(tableField.getJdbcType())) {
 
-                        sql += " " + tableField.getName() + " " + tableField.getJdbcType();
+                        fieldSql.append(" ").append(tableField.getName()).append(" ").append(tableField.getJdbcType());
                     } else {
-                        sql += " " + tableField.getName() + " " + tableField.getJdbcType() + "(" + tableField.getLength() + ")";
+                        fieldSql.append(" ").append(tableField.getName()).append(" ").append(tableField.getJdbcType()).append("(").append(tableField.getLength()).append(")");
                     }
 
                 }
 
 
                 if (tableField.getNotNull()) {
-                    sql += " not null ";
+                    fieldSql.append(" not null ");
                 }
                 if (tableField.getPrimaryKey()) {
-                    sql += " primary key ";
+                    fieldSql.append(" primary key ");
                 }
                 if (tableField.getAutoIncrease()) {
                     if ("Mysql".equals(model.getDataBaseType())) {
 
-                        sql += " auto_increment ";
+                        fieldSql.append(" auto_increment ");
 
                     } else if ("SqlServer".equals(model.getDataBaseType())) {
-                        sql += " identity(1,1) ";
+                        fieldSql.append(" identity(1,1) ");
                     }
 
                 }
                 if (StringUtils.isNotEmpty(tableField.getDefaultValue())) {
                     if ("CURRENT_TIMESTAMP".equals(tableField.getDefaultValue())) {
 
-                        sql += " default " + " " + tableField.getDefaultValue() + " ";
+                        fieldSql.append(" default " + " ").append(tableField.getDefaultValue()).append(" ");
 
                         if ("update_time".equals(tableField.getName())) {
-                            sql += " ON UPDATE CURRENT_TIMESTAMP ";
+                            fieldSql.append(" ON UPDATE CURRENT_TIMESTAMP ");
                         }
 
                     } else {
-                        sql += " default " + "'" + tableField.getDefaultValue() + "'";
+                        if ("bit".equalsIgnoreCase(tableField.getJdbcType())) {
+                            fieldSql.append(" default ").append(tableField.getDefaultValue());
+                        } else {
+                            fieldSql.append(" default '").append(tableField.getDefaultValue()).append("'");
+                        }
                     }
                 }
 
                 if (StringUtils.isNotEmpty(tableField.getRemark())) {
                     if ("Mysql".equals(model.getDataBaseType())) {
-                        sql += " comment " + "'" + tableField.getRemark() + "'";
+                        fieldSql.append(" comment '").append(tableField.getRemark()).append("'");
                     }
                 }
-
-                sql += ",";
+                fieldSqlList.add(fieldSql.toString());
             }
-            String str = sql.substring(0, sql.lastIndexOf(","));
-            String sql1 = str + " )";
+            sql.append(StringUtils.join(fieldSqlList, ",")).append(")");
 
             if (StringUtils.isNotEmpty(model.getRemark())) {
                 if ("Mysql".equals(model.getDataBaseType())) {
-                    sql1 += " comment = " + "'" + model.getRemark() + "'";
+                    sql.append(" comment = '").append(model.getRemark()).append("'");
                 }
             }
 
-            System.out.println(sql1);
-            int result = stmt.executeUpdate(sql1);
+            System.out.println(sql);
+            int result = stmt.executeUpdate(sql.toString());
             if (result != -1) {
                 System.out.println("创建数据表成功");
             }
@@ -199,8 +202,6 @@ public class TableGenerator {
         } finally {
             conn.close();
         }
-
     }
-
 }