diff --git a/core/src/main/java/com/github/drinkjava2/jdialects/DDLCreateUtils.java b/core/src/main/java/com/github/drinkjava2/jdialects/DDLCreateUtils.java index 33776cf13d01d01b3110c6f39eb2ec7d0514d654..b6b66fcc2e2ca5b7329cca10d88fb090455da71e 100644 --- a/core/src/main/java/com/github/drinkjava2/jdialects/DDLCreateUtils.java +++ b/core/src/main/java/com/github/drinkjava2/jdialects/DDLCreateUtils.java @@ -45,7 +45,7 @@ public class DDLCreateUtils {// NOSONAR */ public static String[] toAddColumnDDL(Dialect dialect, ColumnModel... columnModels) { DDLFeatures f = dialect.getDdlFeatures(); - List result = new ArrayList<>(); + List result = new ArrayList<>(); for (ColumnModel c : columnModels) { DialectException.assureNotNull(c.getTableModel(), "columnModel's tableModel can not be null"); String tableName=c.getTableModel().getTableName(); @@ -53,8 +53,10 @@ public class DDLCreateUtils {// NOSONAR StringBuilder sb = new StringBuilder(); sb.append("alter table ").append(tableName).append(" ");// sb.append(f.addColumnString).append(" "); - appendColumnDDLinBuf(dialect, sb, tableName, c);; + appendColumnDDLinBuf(dialect, sb, tableName, c); result.add(sb.toString()); + //对于 没有单独声明DdlFeatures.columnComment 的数据库需要构建独立的 columnComment语句 + buildColumnComment(result, tableName, c,dialect.getDdlFeatures()); } return result.toArray(new String[result.size()]); } @@ -236,10 +238,7 @@ public class DDLCreateUtils {// NOSONAR // column comment on for (ColumnModel c : columns) { - if (!c.getTransientable() && features.supportsCommentOn && c.getComment() != null - && StrUtils.isEmpty(features.columnComment)) - objectResultList.add( - "comment on column " + tableName + '.' + c.getColumnName() + " is '" + c.getComment() + "'"); + buildColumnComment(objectResultList, tableName, c, features); } // index @@ -248,6 +247,20 @@ public class DDLCreateUtils {// NOSONAR // unique buildUniqueDLL(dialect, objectResultList, t); } + + /** + * + * 独立字段描述声明语句 + * @param result + * @param c + */ + protected static void buildColumnComment(List result,String tableName,ColumnModel c,DDLFeatures features) { + if (!c.getTransientable() && features.supportsCommentOn && c.getComment() != null + && StrUtils.isEmpty(features.columnComment)) + result.add( + "comment on column " + tableName + '.' + c.getColumnName() + " is '" + c.getComment() + "'"); + + } private static void appendColumnDDLinBuf(Dialect dialect, StringBuilder buf, String tableName, ColumnModel c) { DDLFeatures features=dialect.getDdlFeatures(); diff --git a/core/src/main/java/com/github/drinkjava2/jdialects/DDLFeatures.java b/core/src/main/java/com/github/drinkjava2/jdialects/DDLFeatures.java index 857c12c56b4ffda991be7d6ce1f2ac04f0aa273a..afbdf6fca0deb877a04543b7ad4d3ad9c937f554 100644 --- a/core/src/main/java/com/github/drinkjava2/jdialects/DDLFeatures.java +++ b/core/src/main/java/com/github/drinkjava2/jdialects/DDLFeatures.java @@ -849,9 +849,9 @@ public class DDLFeatures { } break; case MySQLDialect: { - ddl.addColumnString = "add"; + ddl.addColumnString = "add column"; ddl.addColumnSuffixString = ""; - ddl.dropColumnString = NOT_SUPPORT; + ddl.dropColumnString = "drop column"; ddl.columnSuffixString = NOT_SUPPORT; ddl.modifyColumnString = NOT_SUPPORT; ddl.addFKeyRefPkeyString = " add constraint _FKEYNAME foreign key (_FK1, _FK2) references _REFTABLE (_REF1, _REF2)"; @@ -883,6 +883,7 @@ public class DDLFeatures { break; case MySQL5Dialect: { ddl.addColumnString = "add column"; + ddl.dropColumnString = "drop column"; ddl.addFKeyRefPkeyString = " add constraint _FKEYNAME foreign key (_FK1, _FK2) references _REFTABLE (_REF1, _REF2)"; ddl.closeQuote = "`"; ddl.columnComment = " comment '_COMMENT'"; @@ -914,7 +915,7 @@ public class DDLFeatures { case MySQL55Dialect: { ddl.addColumnString = "add column"; ddl.addColumnSuffixString = ""; - ddl.dropColumnString = "alter table"; + ddl.dropColumnString = "drop column"; ddl.columnSuffixString = NOT_SUPPORT; ddl.modifyColumnString = NOT_SUPPORT; ddl.addFKeyRefPkeyString = " add constraint _FKEYNAME foreign key (_FK1, _FK2) references _REFTABLE (_REF1, _REF2)"; @@ -948,6 +949,7 @@ public class DDLFeatures { break; case MySQL57Dialect: { ddl.addColumnString = "add column"; + ddl.dropColumnString = "drop column"; ddl.addFKeyRefPkeyString = " add constraint _FKEYNAME foreign key (_FK1, _FK2) references _REFTABLE (_REF1, _REF2)"; ddl.closeQuote = "`"; ddl.columnComment = " comment '_COMMENT'"; @@ -979,6 +981,7 @@ public class DDLFeatures { break; case MySQL57InnoDBDialect: { ddl.addColumnString = "add column"; + ddl.dropColumnString = "drop column"; ddl.addFKeyRefPkeyString = " add constraint _FKEYNAME foreign key (_FK1, _FK2) references _REFTABLE (_REF1, _REF2)"; ddl.closeQuote = "`"; ddl.columnComment = " comment '_COMMENT'"; @@ -1010,6 +1013,7 @@ public class DDLFeatures { break; case MySQL5InnoDBDialect: { ddl.addColumnString = "add column"; + ddl.dropColumnString = "drop column"; ddl.addFKeyRefPkeyString = " add constraint _FKEYNAME foreign key (_FK1, _FK2) references _REFTABLE (_REF1, _REF2)"; ddl.closeQuote = "`"; ddl.columnComment = " comment '_COMMENT'"; @@ -1041,6 +1045,7 @@ public class DDLFeatures { break; case MySQLInnoDBDialect: { ddl.addColumnString = "add column"; + ddl.dropColumnString = "drop column"; ddl.addFKeyRefPkeyString = " add constraint _FKEYNAME foreign key (_FK1, _FK2) references _REFTABLE (_REF1, _REF2)"; ddl.closeQuote = "`"; ddl.columnComment = " comment '_COMMENT'"; @@ -1071,6 +1076,7 @@ public class DDLFeatures { break; case MySQLMyISAMDialect: { ddl.addColumnString = "add column"; + ddl.dropColumnString = "drop column"; ddl.addFKeyRefPkeyString = " add constraint _FKEYNAME foreign key (_FK1, _FK2) references _REFTABLE (_REF1, _REF2)"; ddl.closeQuote = "`"; ddl.columnComment = " comment '_COMMENT'"; @@ -1100,6 +1106,7 @@ public class DDLFeatures { break; case MySQL8Dialect: { ddl.addColumnString = "add column"; + ddl.dropColumnString = "drop column"; ddl.addFKeyRefPkeyString = " add constraint _FKEYNAME foreign key (_FK1, _FK2) references _REFTABLE (_REF1, _REF2)"; ddl.closeQuote = "`"; ddl.columnComment = " comment '_COMMENT'";