fix:1107 修复修改排序后丢失注释的问题

This commit is contained in:
tmlx1990
2024-01-18 10:49:07 +08:00
parent 36dd489d18
commit 47ce285b23

View File

@ -174,10 +174,12 @@ public class MysqlSqlBuilder extends DefaultSqlBuilder implements SqlBuilder {
int a = findIndex(originalArray, targetArray[0]);
TableColumn column = oldTable.getColumnList().stream().filter(col -> StringUtils.equals(col.getName(), originalArray[a])).findFirst().get();
String[] newArray = moveElement(originalArray, a, 0);
System.out.println(ArrayUtil.toString(newArray));
sql.append(" MODIFY COLUMN ");
MysqlColumnTypeEnum typeEnum = MysqlColumnTypeEnum.getByType(column.getColumnType());
sql.append(typeEnum.buildColumn(column));
if (StringUtils.isNotBlank(column.getComment())) {
sql.append(" COMMENT '").append(column.getComment()).append("'");
}
sql.append(" FIRST;\n");
n++;
if (Arrays.equals(newArray, targetArray)) {
@ -196,7 +198,6 @@ public class MysqlSqlBuilder extends DefaultSqlBuilder implements SqlBuilder {
//System.out.println("Move " + originalArray[a] + " after " + (a > 0 ? originalArray[max] : "start"));
TableColumn column = oldTable.getColumnList().stream().filter(col -> StringUtils.equals(col.getName(), originalArray[a])).findFirst().get();
String[] newArray = moveElement(originalArray, a, max);
System.out.println(ArrayUtil.toString(newArray));
if (n > 0) {
sql.append("ALTER TABLE ");
if (StringUtils.isNotBlank(oldTable.getDatabaseName())) {
@ -207,7 +208,9 @@ public class MysqlSqlBuilder extends DefaultSqlBuilder implements SqlBuilder {
sql.append(" MODIFY COLUMN ");
MysqlColumnTypeEnum typeEnum = MysqlColumnTypeEnum.getByType(column.getColumnType());
sql.append(typeEnum.buildColumn(column));
sql.append(" ");
if (StringUtils.isNotBlank(column.getComment())) {
sql.append(" COMMENT '").append(column.getComment()).append("'");
}
sql.append(" AFTER ");
sql.append(oldTable.getColumnList().get(max).getName());
sql.append(";\n");
@ -238,7 +241,9 @@ public class MysqlSqlBuilder extends DefaultSqlBuilder implements SqlBuilder {
sql.append(" MODIFY COLUMN ");
MysqlColumnTypeEnum typeEnum = MysqlColumnTypeEnum.getByType(column.getColumnType());
sql.append(typeEnum.buildColumn(column));
sql.append(" ");
if (StringUtils.isNotBlank(column.getComment())) {
sql.append(" COMMENT '").append(column.getComment()).append("'");
}
sql.append(" AFTER ");
if (i < a) {
sql.append(originalArray[a]);
@ -271,7 +276,6 @@ public class MysqlSqlBuilder extends DefaultSqlBuilder implements SqlBuilder {
}
private static boolean isMoveValid(String[] originalArray, String[] targetArray, int i, int a) {
System.out.println("i : " + i + " a:" + a);
return (i == 0 || a == 0 || !originalArray[i - 1].equals(targetArray[a - 1])) &&
(i >= originalArray.length - 1 || a >= targetArray.length - 1 || !originalArray[i + 1].equals(targetArray[a + 1]));
}
@ -286,7 +290,6 @@ public class MysqlSqlBuilder extends DefaultSqlBuilder implements SqlBuilder {
System.arraycopy(originalArray, to, newArray, to + 1, from - to);
}
newArray[to] = temp;
System.out.println(ArrayUtil.toString(newArray));
return newArray;
}