Unverified Commit 70c4d1f1 authored by zzzzzzzs's avatar zzzzzzzs Committed by GitHub

[Feature][Auto Create Mysql table] MySQL automatically creates tables...

[Feature][Auto Create Mysql table] MySQL automatically creates tables consistent with the original tables (#1179)

* MySQL automatically creates tables consistent with the original tables

* Optimization type length judgment logic

* format code

* format code import
parent 09a9d4aa
...@@ -46,6 +46,7 @@ public class Column implements Serializable { ...@@ -46,6 +46,7 @@ public class Column implements Serializable {
private ColumnType javaType; private ColumnType javaType;
private String columnFamily; private String columnFamily;
private Integer position; private Integer position;
private Integer length;
private Integer precision; private Integer precision;
private Integer scale; private Integer scale;
private String characterSet; private String characterSet;
......
...@@ -83,17 +83,15 @@ public class MySqlDriver extends AbstractJdbcDriver { ...@@ -83,17 +83,15 @@ public class MySqlDriver extends AbstractJdbcDriver {
Column column = table.getColumns().get(i); Column column = table.getColumns().get(i);
sb.append(" `") sb.append(" `")
.append(column.getName()).append("` ") .append(column.getName()).append("` ")
.append(column.getType()).append(" "); .append(column.getType());
//todo tmp process for varchar // 处理浮点类型
if (column.getType().equals("varchar")) { if (column.getPrecision() > 0 && column.getScale() > 0) {
sb.append("(255)"); sb.append("(")
} .append(column.getLength())
if (column.getPrecision() > 0) { .append(",").append(column.getScale())
sb.append("(").append(column.getPrecision()); .append(")");
if (column.getScale() > 0) { } else if (null != column.getLength()) { // 处理字符串类型和数值型
sb.append(",").append(column.getScale()); sb.append("(").append(column.getLength()).append(")");
}
sb.append(")");
} }
if (Asserts.isNotNull(column.getCharacterSet())) { if (Asserts.isNotNull(column.getCharacterSet())) {
sb.append(" CHARACTER SET ").append(column.getCharacterSet()); sb.append(" CHARACTER SET ").append(column.getCharacterSet());
......
...@@ -42,7 +42,7 @@ public class MySqlQuery extends AbstractDBQuery { ...@@ -42,7 +42,7 @@ public class MySqlQuery extends AbstractDBQuery {
@Override @Override
public String columnsSql(String schemaName, String tableName) { public String columnsSql(String schemaName, String tableName) {
return "select COLUMN_NAME,DATA_TYPE,COLUMN_COMMENT,COLUMN_KEY,EXTRA AS AUTO_INCREMENT" return "select COLUMN_NAME,COLUMN_TYPE,COLUMN_COMMENT,COLUMN_KEY,EXTRA AS AUTO_INCREMENT"
+ ",COLUMN_DEFAULT,IS_NULLABLE,NUMERIC_PRECISION,NUMERIC_SCALE,CHARACTER_SET_NAME" + ",COLUMN_DEFAULT,IS_NULLABLE,NUMERIC_PRECISION,NUMERIC_SCALE,CHARACTER_SET_NAME"
+ ",COLLATION_NAME,ORDINAL_POSITION from INFORMATION_SCHEMA.COLUMNS " + ",COLLATION_NAME,ORDINAL_POSITION from INFORMATION_SCHEMA.COLUMNS "
+ "where TABLE_SCHEMA = '" + schemaName + "' and TABLE_NAME = '" + tableName + "' " + "where TABLE_SCHEMA = '" + schemaName + "' and TABLE_NAME = '" + tableName + "' "
...@@ -54,4 +54,8 @@ public class MySqlQuery extends AbstractDBQuery { ...@@ -54,4 +54,8 @@ public class MySqlQuery extends AbstractDBQuery {
return "Database"; return "Database";
} }
@Override
public String columnType() {
return "COLUMN_TYPE";
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment