|
|
@@ -54,9 +54,7 @@ public class TableGenerator {
|
|
|
public static void GenTable(GenCode model) throws Exception {
|
|
|
Connection conn = null;
|
|
|
try {
|
|
|
-
|
|
|
String DRIVER = "com.mysql.jdbc.Driver";
|
|
|
-
|
|
|
PropertiesFileLoader propertiesFileLoader = PropertiesFileLoader.getInstance();
|
|
|
|
|
|
//基础数据库
|
|
|
@@ -64,12 +62,9 @@ public class TableGenerator {
|
|
|
String user = propertiesFileLoader.getProperties("properties/jdbc.properties", "jdbc.username");
|
|
|
String password = propertiesFileLoader.getProperties("properties/jdbc.properties", "jdbc.password");
|
|
|
|
|
|
-
|
|
|
if (!"dataSource".equals(model.getDataSourceCode())) {//如果不是基础数据库
|
|
|
-
|
|
|
//获取数据源配置信息
|
|
|
DataSourceInfo dataSourceInfo = Const.DataSourceInfoMap.get(model.getDataSourceCode());
|
|
|
-
|
|
|
if ("Mysql".equals(dataSourceInfo.getDatabaseType())) {
|
|
|
url = "jdbc:mysql://" + dataSourceInfo.getUrl() + "/" + dataSourceInfo.getDatabaseName();
|
|
|
user = dataSourceInfo.getUsername();
|
|
|
@@ -80,23 +75,22 @@ public class TableGenerator {
|
|
|
user = dataSourceInfo.getUsername();
|
|
|
password = dataSourceInfo.getPassword();
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
-
|
|
|
conn = JDBC.connectDB(DRIVER, url, user, password);
|
|
|
|
|
|
Statement stmt = conn.createStatement();
|
|
|
|
|
|
- String sql = "DROP TABLE IF EXISTS " + model.getTableName() + "; create table " + model.getTableName() + "(";
|
|
|
+ StringBuilder sql = new StringBuilder("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":
|
|
|
@@ -125,81 +119,73 @@ public class TableGenerator {
|
|
|
tableField.setLength(0);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
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 ("timestamp".equalsIgnoreCase(tableField.getJdbcType()) && StringUtils.isEmpty(tableField.getDefaultValue())) {
|
|
|
+ tableField.setDefaultValue("null");
|
|
|
}
|
|
|
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 if ("null".equalsIgnoreCase(tableField.getDefaultValue())) {
|
|
|
+ fieldSql.append(" NULL ");
|
|
|
} 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);
|
|
|
+ stmt.execute("DROP TABLE IF EXISTS " + model.getTableName());
|
|
|
+ int result = stmt.executeUpdate(sql.toString());
|
|
|
if (result != -1) {
|
|
|
System.out.println("创建数据表成功");
|
|
|
}
|
|
|
-
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
} finally {
|
|
|
conn.close();
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|