This commit is contained in:
SwallowGG
2023-09-24 15:42:49 +08:00
parent 44cf6013e2
commit 3e9868e3f4
4 changed files with 90 additions and 64 deletions

View File

@ -157,20 +157,23 @@ public class MysqlMetaData extends DefaultMetaService implements MetaData {
try {
if (columnType.contains("(")) {
String size = columnType.substring(columnType.indexOf("(") + 1, columnType.indexOf(")"));
if (size.contains(",")) {
String[] sizes = size.split(",");
if (StringUtils.isNotBlank(sizes[0])) {
column.setColumnSize(Integer.parseInt(sizes[0]));
if("SET".equalsIgnoreCase(column.getColumnType())|| "ENUM".equalsIgnoreCase(column.getColumnType())){
column.setValue(size);
}else {
if (size.contains(",")) {
String[] sizes = size.split(",");
if (StringUtils.isNotBlank(sizes[0])) {
column.setColumnSize(Integer.parseInt(sizes[0]));
}
if (StringUtils.isNotBlank(sizes[1])) {
column.setDecimalDigits(Integer.parseInt(sizes[1]));
}
} else {
column.setColumnSize(Integer.parseInt(size));
}
if (StringUtils.isNotBlank(sizes[1])) {
column.setDecimalDigits(Integer.parseInt(sizes[1]));
}
} else {
column.setColumnSize(Integer.parseInt(size));
}
}
}catch (Exception e){
}
}

View File

@ -13,105 +13,105 @@ import java.util.Map;
public enum MysqlColumnTypeEnum implements ColumnBuilder {
BIT("BIT", true, false, true, false, false, false, true, true, false),
BIT("BIT", true, false, true, false, false, false, true, true, false, false),
TINYINT("TINYINT", false, false, true, true, false, false, true, true, false),
TINYINT("TINYINT", false, false, true, true, false, false, true, true, false, false),
TINYINT_UNSIGNED("TINYINT UNSIGNED", false, false, true, true, false, false, true, true, false),
TINYINT_UNSIGNED("TINYINT UNSIGNED", false, false, true, true, false, false, true, true, false, false),
SMALLINT("SMALLINT", false, false, true, true, false, false, true, true, false),
SMALLINT("SMALLINT", false, false, true, true, false, false, true, true, false, false),
SMALLINT_UNSIGNED("SMALLINT UNSIGNED", false, false, true, true, false, false, true, true, false),
SMALLINT_UNSIGNED("SMALLINT UNSIGNED", false, false, true, true, false, false, true, true, false, false),
MEDIUMINT("MEDIUMINT", false, false, true, true, false, false, true, true, false),
MEDIUMINT("MEDIUMINT", false, false, true, true, false, false, true, true, false, false),
MEDIUMINT_UNSIGNED("MEDIUMINT UNSIGNED", false, false, true, true, false, false, true, true, false),
MEDIUMINT_UNSIGNED("MEDIUMINT UNSIGNED", false, false, true, true, false, false, true, true, false, false),
INT("INT", false, false, true, true, false, false, true, true, false),
INT("INT", false, false, true, true, false, false, true, true, false, false),
INT_UNSIGNED("INT UNSIGNED", false, false, true, true, false, false, true, true, false),
INT_UNSIGNED("INT UNSIGNED", false, false, true, true, false, false, true, true, false, false),
BIGINT("BIGINT", false, false, true, true, false, false, true, true, false),
BIGINT("BIGINT", false, false, true, true, false, false, true, true, false, false),
BIGINT_UNSIGNED("BIGINT UNSIGNED", false, false, true, true, false, false, true, true, false),
BIGINT_UNSIGNED("BIGINT UNSIGNED", false, false, true, true, false, false, true, true, false, false),
DECIMAL("DECIMAL", true, true, true, false, false, false, true, true, false),
DECIMAL("DECIMAL", true, true, true, false, false, false, true, true, false, false),
DECIMAL_UNSIGNED("DECIMAL UNSIGNED", true, true, true, false, false, false, true, true, false),
DECIMAL_UNSIGNED("DECIMAL UNSIGNED", true, true, true, false, false, false, true, true, false, false),
FLOAT("FLOAT", true, true, true, false, false, false, true, true, false),
FLOAT("FLOAT", true, true, true, false, false, false, true, true, false, false),
FLOAT_UNSIGNED("FLOAT UNSIGNED", true, true, true, false, false, false, true, true, false),
FLOAT_UNSIGNED("FLOAT UNSIGNED", true, true, true, false, false, false, true, true, false, false),
DOUBLE("DOUBLE", true, true, true, false, false, false, true, true, false),
DOUBLE("DOUBLE", true, true, true, false, false, false, true, true, false, false),
DOUBLE_UNSIGNED("DOUBLE UNSIGNED", true, true, true, false, false, false, true, true, false),
DATE("DATE", false, false, true, false, false, false, true, true, false),
DATETIME("DATETIME", true, false, true, false, false, false, true, true, true),
DOUBLE_UNSIGNED("DOUBLE UNSIGNED", true, true, true, false, false, false, true, true, false, false),
DATE("DATE", false, false, true, false, false, false, true, true, false, false),
DATETIME("DATETIME", true, false, true, false, false, false, true, true, true, false),
TIMESTAMP("TIMESTAMP", true, false, true, false, false, false, true, true, true),
TIME("TIME", true, false, true, false, false, false, true, true, false),
YEAR("YEAR", false, false, true, false, false, false, true, true, false),
CHAR("CHAR", true, false, true, false, true, true, true, true, false),
TIMESTAMP("TIMESTAMP", true, false, true, false, false, false, true, true, true, false),
TIME("TIME", true, false, true, false, false, false, true, true, false, false),
YEAR("YEAR", false, false, true, false, false, false, true, true, false, false),
CHAR("CHAR", true, false, true, false, true, true, true, true, false, false),
VARCHAR("VARCHAR", true, false, true, false, true, true, true, true, false),
VARCHAR("VARCHAR", true, false, true, false, true, true, true, true, false, false),
BINARY("BINARY", true, false, true, false, false, false, true, true, false),
BINARY("BINARY", true, false, true, false, false, false, true, true, false, false),
VARBINARY("VARBINARY", true, false, true, false, false, false, true, true, false),
VARBINARY("VARBINARY", true, false, true, false, false, false, true, true, false, false),
TINYBLOB("TINYBLOB", false, false, true, false, false, false, true, false, false),
TINYBLOB("TINYBLOB", false, false, true, false, false, false, true, false, false, false),
BLOB("BLOB", false, false, true, false, false, false, true, false, false),
BLOB("BLOB", false, false, true, false, false, false, true, false, false, false),
MEDIUMBLOB("MEDIUMBLOB", false, false, true, false, false, false, true, false, false),
MEDIUMBLOB("MEDIUMBLOB", false, false, true, false, false, false, true, false, false, false),
LONGBLOB("LONGBLOB", false, false, true, false, false, false, true, false, false),
LONGBLOB("LONGBLOB", false, false, true, false, false, false, true, false, false, false),
TINYTEXT("TINYTEXT", false, false, true, false, false, true, true, false, false),
TINYTEXT("TINYTEXT", false, false, true, false, false, true, true, false, false, false),
TEXT("TEXT", false, false, true, false, false, true, true, false, false),
TEXT("TEXT", false, false, true, false, false, true, true, false, false, false),
MEDIUMTEXT("MEDIUMTEXT", false, false, true, false, false, true, true, false, false),
MEDIUMTEXT("MEDIUMTEXT", false, false, true, false, false, true, true, false, false, false),
LONGTEXT("LONGTEXT", false, false, true, false, false, true, true, false, false),
LONGTEXT("LONGTEXT", false, false, true, false, false, true, true, false, false, false),
ENUM("ENUM", false, false, true, false, false, true, true, true, true),
ENUM("ENUM", false, false, true, false, false, true, true, true, true, true),
BOOL("BOOL", false, false, true, true, false, false, true, true, false),
BOOL("BOOL", false, false, true, true, false, false, true, true, false, false),
INTEGER("INTEGER", false, false, true, true, false, false, true, true, false),
INTEGER("INTEGER", false, false, true, true, false, false, true, true, false, false),
INTEGER_UNSIGNED("INTEGER UNSIGNED", false, false, true, true, false, false, true, true, false),
INTEGER_UNSIGNED("INTEGER UNSIGNED", false, false, true, true, false, false, true, true, false, false),
REAL("REAL", true, true, true, false, false, false, true, true, false),
REAL("REAL", true, true, true, false, false, false, true, true, false, false),
SET("SET", false, false, true, false, false, true, true, true, true),
SET("SET", false, false, true, false, false, true, true, true, true, true),
GEOMETRY("GEOMETRY", false, false, true, false, false, false, true, false, false),
GEOMETRY("GEOMETRY", false, false, true, false, false, false, true, false, false, false),
POINT("POINT", false, false, true, false, false, false, true, false, false),
POINT("POINT", false, false, true, false, false, false, true, false, false, false),
LINESTRING("LINESTRING", false, false, true, false, false, false, true, false, false),
LINESTRING("LINESTRING", false, false, true, false, false, false, true, false, false, false),
POLYGON("POLYGON", false, false, true, false, false, false, true, false, false),
POLYGON("POLYGON", false, false, true, false, false, false, true, false, false, false),
MULTIPOINT("MULTIPOINT", false, false, true, false, false, false, true, false, false),
MULTIPOINT("MULTIPOINT", false, false, true, false, false, false, true, false, false, false),
MULTILINESTRING("MULTILINESTRING", false, false, true, false, false, false, true, false, false),
MULTILINESTRING("MULTILINESTRING", false, false, true, false, false, false, true, false, false, false),
MULTIPOLYGON("MULTIPOLYGON", false, false, true, false, false, false, true, false, false),
MULTIPOLYGON("MULTIPOLYGON", false, false, true, false, false, false, true, false, false, false),
GEOMETRYCOLLECTION("GEOMETRYCOLLECTION", false, false, true, false, false, false, true, false, false),
GEOMETRYCOLLECTION("GEOMETRYCOLLECTION", false, false, true, false, false, false, true, false, false, false),
JSON("JSON", false, false, true, false, false, false, true, false, false);
JSON("JSON", false, false, true, false, false, false, true, false, false, false);
private ColumnType columnType;
@ -124,8 +124,8 @@ public enum MysqlColumnTypeEnum implements ColumnBuilder {
}
MysqlColumnTypeEnum(String dataTypeName, boolean supportLength, boolean supportScale, boolean supportNullable, boolean supportAutoIncrement, boolean supportCharset, boolean supportCollation, boolean supportComments, boolean supportDefaultValue, boolean supportExtent) {
this.columnType = new ColumnType(dataTypeName, supportLength, supportScale, supportNullable, supportAutoIncrement, supportCharset, supportCollation, supportComments, supportDefaultValue, supportExtent);
MysqlColumnTypeEnum(String dataTypeName, boolean supportLength, boolean supportScale, boolean supportNullable, boolean supportAutoIncrement, boolean supportCharset, boolean supportCollation, boolean supportComments, boolean supportDefaultValue, boolean supportExtent,boolean supportValue) {
this.columnType = new ColumnType(dataTypeName, supportLength, supportScale, supportNullable, supportAutoIncrement, supportCharset, supportCollation, supportComments, supportDefaultValue, supportExtent,supportValue);
}
private static Map<String, MysqlColumnTypeEnum> COLUMN_TYPE_MAP = Maps.newHashMap();
@ -149,6 +149,10 @@ public enum MysqlColumnTypeEnum implements ColumnBuilder {
script.append(buildDataType(column, type)).append(" ");
script.append(buildCharset(column,type)).append(" ");
script.append(buildCollation(column,type)).append(" ");
script.append(buildNullable(column,type)).append(" ");
script.append(buildDefaultValue(column,type)).append(" ");
@ -162,6 +166,20 @@ public enum MysqlColumnTypeEnum implements ColumnBuilder {
return script.toString();
}
private String buildCharset(TableColumn column, MysqlColumnTypeEnum type) {
if(!type.getColumnType().isSupportCharset() || StringUtils.isEmpty(column.getCharSetName())){
return "";
}
return StringUtils.join("CHARACTER SET ",column.getCharSetName());
}
private String buildCollation(TableColumn column, MysqlColumnTypeEnum type) {
if(!type.getColumnType().isSupportCollation() || StringUtils.isEmpty(column.getCollationName())){
return "";
}
return StringUtils.join("COLLATE ",column.getCollationName());
}
@Override
public String buildModifyColumn(TableColumn tableColumn) {
@ -218,7 +236,7 @@ public enum MysqlColumnTypeEnum implements ColumnBuilder {
}
if(Arrays.asList(DATETIME,TIMESTAMP).contains(type)){
if("CURRENT_TIMESTAMP".equalsIgnoreCase(column.getDefaultValue())){
if("CURRENT_TIMESTAMP".equalsIgnoreCase(column.getDefaultValue().trim())){
return StringUtils.join("DEFAULT ",column.getDefaultValue());
}
return StringUtils.join("DEFAULT '",column.getDefaultValue(),"'");
@ -282,8 +300,8 @@ public enum MysqlColumnTypeEnum implements ColumnBuilder {
}
if(Arrays.asList(SET,ENUM).contains(type)){
if(!StringUtils.isEmpty( column.getDefaultValue())){
return StringUtils.join(columnType,"(",column.getDefaultValue(),")");
if(!StringUtils.isEmpty( column.getValue())){
return StringUtils.join(columnType,"(",column.getValue(),")");
}
//List<String> enumList = column.
}