Skip to content

Commit 570f18c

Browse files
committed
build: 3.0.89 修复H2列生成带逗号的bug
1 parent 28058f5 commit 570f18c

File tree

33 files changed

+334
-43
lines changed

33 files changed

+334
-43
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<groupId>com.easy-query</groupId>
88
<artifactId>easy-query-all</artifactId>
99
<packaging>pom</packaging>
10-
<version>3.0.88</version>
10+
<version>3.0.89</version>
1111
<name>easy-query</name>
1212
<description>java object query distributed connector</description>
1313
<url>https://github.com/xuejmnet/easy-query</url>

sql-core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>easy-query-all</artifactId>
77
<groupId>com.easy-query</groupId>
8-
<version>3.0.88</version>
8+
<version>3.0.89</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

sql-core/src/main/java/com/easy/query/core/basic/jdbc/executor/internal/common/SQLUnionAllRewriteUnitImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public void rewriteTableName(EntityTableSQLExpression entityTableSQLExpression)
4747
for (String realTableName : realTableNames) {
4848
EntityMetadata entityMetadata = entityTableSQLExpression.getEntityMetadata();
4949
SQLKeyword sqlKeyword = entityTableSQLExpression.getQueryRuntimeContext().getQueryConfiguration().getDialect();
50-
String schemaTableName = EasyToSQLUtil.getSchemaTableName(sqlKeyword, entityMetadata, realTableName, entityTableSQLExpression.getSchemaAs(), null);
50+
String schemaTableName = EasyToSQLUtil.getSchemaTableName(sqlKeyword, entityMetadata.getSchemaOrNull(), realTableName, entityTableSQLExpression.getSchemaAs(), null);
5151
if (!first) {
5252
tableSQL.append(" UNION ALL ");
5353
}

sql-core/src/main/java/com/easy/query/core/expression/sql/expression/impl/TableSQLExpressionImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public String getSelectTableSource() {
106106

107107
@Override
108108
public String getTableName() {
109-
return EasyToSQLUtil.getSchemaTableName(SQLKeyWord, entityTable.getEntityMetadata(), entityTable.getTableName(), schemaAs, tableNameAs);
109+
return EasyToSQLUtil.getSchemaTableName(SQLKeyWord, entityTable.getEntityMetadata().getSchemaOrNull(), entityTable.getTableName(), schemaAs, tableNameAs);
110110
}
111111

112112
@Override

sql-core/src/main/java/com/easy/query/core/migration/AbstractDatabaseMigrationProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ protected String getColumnComment(EntityMigrationMetadata entityMigrationMetadat
112112
protected Set<String> getColumnNames(EntityMigrationMetadata entityMigrationMetadata, boolean oldTable) {
113113
EntityMetadata entityMetadata = entityMigrationMetadata.getEntityMetadata();
114114

115-
String columnTableName = EasyToSQLUtil.getSchemaTableName(sqlKeyword, entityMetadata, oldTable ? entityMetadata.getOldTableName() : entityMetadata.getTableName(), null, null);
115+
String columnTableName = EasyToSQLUtil.getSchemaTableName(sqlKeyword, entityMetadata.getSchemaOrNull(), oldTable ? entityMetadata.getOldTableName() : entityMetadata.getTableName(), null, null);
116116
//比较差异
117117
return EasyDatabaseUtil.getColumns(dataSource, "select * from " + columnTableName + " where 1=2");
118118
}
Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
package com.easy.query.core.migration;
2+
3+
import com.easy.query.core.context.QueryRuntimeContext;
4+
import com.easy.query.core.exception.EasyQueryInvalidOperationException;
5+
import com.easy.query.core.inject.ServiceProvider;
6+
import com.easy.query.core.metadata.EntityMetadata;
7+
import com.easy.query.core.metadata.EntityMetadataManager;
8+
import com.easy.query.core.migration.data.TableMigrationData;
9+
import com.easy.query.core.util.EasyStringUtil;
10+
11+
import java.util.ArrayList;
12+
import java.util.List;
13+
import java.util.Objects;
14+
15+
/**
16+
* create time 2025/1/11 14:29
17+
* 文件说明
18+
*
19+
* @author xuejiaming
20+
*/
21+
public class DefaultMigrationsSQLGenerator2 implements MigrationsSQLGenerator {
22+
private final EntityMetadataManager entityMetadataManager;
23+
private final DatabaseMigrationProvider databaseMigrationProvider;
24+
private final ServiceProvider serviceProvider;
25+
26+
public DefaultMigrationsSQLGenerator2(EntityMetadataManager entityMetadataManager, DatabaseMigrationProvider databaseMigrationProvider, ServiceProvider serviceProvider) {
27+
this.entityMetadataManager = entityMetadataManager;
28+
this.databaseMigrationProvider = databaseMigrationProvider;
29+
this.serviceProvider = serviceProvider;
30+
}
31+
32+
@Override
33+
public List<MigrationCommand> generateMigrationSQL(MigrationContext migrationContext) {
34+
ArrayList<MigrationCommand> migrationCommands = new ArrayList<>();
35+
// if (!databaseMigrationProvider.databaseExists()) {
36+
// MigrationCommand databaseCommand = databaseMigrationProvider.createDatabaseCommand();
37+
// if (databaseCommand != null) {
38+
// migrationCommands.add(databaseCommand);
39+
// }
40+
// }
41+
QueryRuntimeContext runtimeContext = serviceProvider.getService(QueryRuntimeContext.class);
42+
for (Class<?> entity : migrationContext.getEntities()) {
43+
TableMigrationData tableMigrationData=new TableMigrationData();
44+
EntityMetadata entityMetadata = entityMetadataManager.getEntityMetadata(entity);
45+
EntityMigrationMetadata entityMigrationMetadata = databaseMigrationProvider.createEntityMigrationMetadata(entityMetadata);
46+
if (EasyStringUtil.isBlank(tableMigrationData.getTableName())) {
47+
throw new EasyQueryInvalidOperationException(String.format("table migration data key:[%s] not found table name.", tableMigrationData.getKey()));
48+
}
49+
// if (sql.length() > 0) {
50+
// sql.append(newLine);
51+
// }
52+
// String tableName = EasyToSQLUtil.getTableName(sqlKeyword, entityMetadata, entityMetadata.getTableName(), null, null);
53+
// String oldTableName = EasyStringUtil.isBlank(entityMetadata.getOldTableName()) ? null : EasyToSQLUtil.getTableName(sqlKeyword, entityMetadata, entityMetadata.getOldTableName(), null, null);
54+
boolean tableExists = databaseMigrationProvider.tableExists(tableMigrationData.getSchema(), tableMigrationData.getTableName());
55+
if (!tableExists) {
56+
//如果新旧表名不一致
57+
if (!Objects.equals(tableMigrationData.getTableName(), tableMigrationData.getOldTableName())) {
58+
//判断旧表是否存在
59+
boolean oldTableExists = databaseMigrationProvider.tableExists(tableMigrationData.getSchema(), tableMigrationData.getOldTableName());
60+
if (oldTableExists) {
61+
//存在就要修改表名
62+
MigrationCommand migrationCommand = databaseMigrationProvider.renameTable(entityMigrationMetadata);
63+
if (migrationCommand != null) {
64+
migrationCommands.add(migrationCommand);
65+
}
66+
//新增修改删除表信息
67+
List<MigrationCommand> columns = databaseMigrationProvider.syncTable(entityMigrationMetadata, false);
68+
if (columns != null) {
69+
migrationCommands.addAll(columns);
70+
}
71+
//判断是否要创建索引
72+
} else {
73+
//表不存在就创建表
74+
MigrationCommand migrationCommand = databaseMigrationProvider.createTable(entityMigrationMetadata);
75+
if (migrationCommand != null) {
76+
migrationCommands.add(migrationCommand);
77+
}
78+
//创建外键
79+
List<MigrationCommand> tableForeignKeyCommands = databaseMigrationProvider.createTableForeignKey(entityMigrationMetadata, runtimeContext);
80+
migrationCommands.addAll(tableForeignKeyCommands);
81+
//创建索引
82+
List<MigrationCommand> tableIndexCommands = databaseMigrationProvider.createTableIndex(entityMigrationMetadata);
83+
migrationCommands.addAll(tableIndexCommands);
84+
}
85+
} else {
86+
//表不存在就创建表
87+
MigrationCommand migrationCommand = databaseMigrationProvider.createTable(entityMigrationMetadata);
88+
if (migrationCommand != null) {
89+
migrationCommands.add(migrationCommand);
90+
}
91+
//创建外键
92+
List<MigrationCommand> tableForeignKeyCommands = databaseMigrationProvider.createTableForeignKey(entityMigrationMetadata, runtimeContext);
93+
migrationCommands.addAll(tableForeignKeyCommands);
94+
//创建索引
95+
List<MigrationCommand> tableIndexCommands = databaseMigrationProvider.createTableIndex(entityMigrationMetadata);
96+
migrationCommands.addAll(tableIndexCommands);
97+
}
98+
} else {
99+
List<MigrationCommand> columns = databaseMigrationProvider.syncTable(entityMigrationMetadata, false);
100+
if (columns != null) {
101+
migrationCommands.addAll(columns);
102+
}
103+
//创建外键
104+
List<MigrationCommand> tableForeignKeyCommands = databaseMigrationProvider.syncTableForeignKey(entityMigrationMetadata, runtimeContext, false);
105+
migrationCommands.addAll(tableForeignKeyCommands);
106+
//创建索引
107+
List<MigrationCommand> tableIndexCommands = databaseMigrationProvider.syncTableIndex(entityMigrationMetadata, false);
108+
migrationCommands.addAll(tableIndexCommands);
109+
}
110+
111+
// for (ColumnMetadata column : entityMetadata.getColumns()) {
112+
//
113+
// }
114+
// foreach (var tbcol in tb.ColumnsByPosition)
115+
// {
116+
// sb.Append(" \r\n ").Append(_commonUtils.QuoteSqlName(tbcol.Attribute.Name)).Append(" ").Append(tbcol.Attribute.DbType);
117+
// if (tbcol.Attribute.IsIdentity == true && tbcol.Attribute.DbType.IndexOf("AUTO_INCREMENT", StringComparison.CurrentCultureIgnoreCase) == -1) sb.Append(" AUTO_INCREMENT");
118+
// if (string.IsNullOrEmpty(tbcol.Comment) == false) sb.Append(" COMMENT ").Append(_commonUtils.FormatSql("{0}", tbcol.Comment));
119+
// sb.Append(",");
120+
// }
121+
// if (tb.Primarys.Any())
122+
// {
123+
// sb.Append(" \r\n PRIMARY KEY (");
124+
// foreach (var tbcol in tb.Primarys) sb.Append(_commonUtils.QuoteSqlName(tbcol.Attribute.Name)).Append(", ");
125+
// sb.Remove(sb.Length - 2, 2).Append("),");
126+
// }
127+
128+
}
129+
return migrationCommands;
130+
}
131+
132+
@Override
133+
public List<MigrationCommand> generateCreateTableMigrationSQL(MigrationContext migrationContext) {
134+
ArrayList<MigrationCommand> migrationCommands = new ArrayList<>(migrationContext.getEntities().size());
135+
for (Class<?> entity : migrationContext.getEntities()) {
136+
EntityMetadata entityMetadata = entityMetadataManager.getEntityMetadata(entity);
137+
EntityMigrationMetadata entityMigrationMetadata = new EntityMigrationMetadata(entityMetadata);
138+
MigrationCommand migrationCommand = databaseMigrationProvider.createTable(entityMigrationMetadata);
139+
if (migrationCommand != null) {
140+
migrationCommands.add(migrationCommand);
141+
}
142+
List<MigrationCommand> tableIndexCommands = databaseMigrationProvider.createTableIndex(entityMigrationMetadata);
143+
migrationCommands.addAll(tableIndexCommands);
144+
}
145+
return migrationCommands;
146+
}
147+
148+
@Override
149+
public List<MigrationCommand> generateDropTableMigrationSQL(MigrationContext migrationContext,boolean checkTableExists) {
150+
ArrayList<MigrationCommand> migrationCommands = new ArrayList<>(migrationContext.getEntities().size());
151+
for (Class<?> entity : migrationContext.getEntities()) {
152+
if(checkTableExists){
153+
if(!tableExists(entity)){
154+
continue;
155+
}
156+
}
157+
EntityMetadata entityMetadata = entityMetadataManager.getEntityMetadata(entity);
158+
MigrationCommand migrationCommand = databaseMigrationProvider.dropTable(new EntityMigrationMetadata(entityMetadata));
159+
if (migrationCommand != null) {
160+
migrationCommands.add(migrationCommand);
161+
}
162+
}
163+
return migrationCommands;
164+
}
165+
166+
@Override
167+
public boolean tableExists(Class<?> entityType) {
168+
EntityMetadata entityMetadata = entityMetadataManager.getEntityMetadata(entityType);
169+
return databaseMigrationProvider.tableExists(entityMetadata.getSchemaOrNull(), entityMetadata.getTableName());
170+
}
171+
}

sql-core/src/main/java/com/easy/query/core/migration/MigrationContext.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33

44
import com.easy.query.core.context.QueryRuntimeContext;
5+
import com.easy.query.core.migration.data.TableMigrationData;
56

7+
import java.util.Collections;
68
import java.util.List;
79

810
/**
@@ -23,4 +25,8 @@ public List<Class<?>> getEntities() {
2325
return entities;
2426
}
2527

28+
public List<TableMigrationData> getTableMigrationDataList(){
29+
return Collections.emptyList();
30+
}
31+
2632
}

sql-core/src/main/java/com/easy/query/core/migration/data/TableMigrationData.java

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,62 @@
99
* @author xuejiaming
1010
*/
1111
public class TableMigrationData {
12+
private String key;
1213
private String schema;
13-
private String name;
14+
/**
15+
* 表名
16+
*/
17+
private String tableName;
18+
private String oldTableName;
1419
private String comment;
1520

1621
private List<ColumnMigrationData> columns;
22+
23+
public String getKey() {
24+
return key;
25+
}
26+
27+
public void setKey(String key) {
28+
this.key = key;
29+
}
30+
31+
public String getSchema() {
32+
return schema;
33+
}
34+
35+
public void setSchema(String schema) {
36+
this.schema = schema;
37+
}
38+
39+
public String getTableName() {
40+
return tableName;
41+
}
42+
43+
public void setTableName(String tableName) {
44+
this.tableName = tableName;
45+
}
46+
47+
public String getOldTableName() {
48+
return oldTableName;
49+
}
50+
51+
public void setOldTableName(String oldTableName) {
52+
this.oldTableName = oldTableName;
53+
}
54+
55+
public String getComment() {
56+
return comment;
57+
}
58+
59+
public void setComment(String comment) {
60+
this.comment = comment;
61+
}
62+
63+
public List<ColumnMigrationData> getColumns() {
64+
return columns;
65+
}
66+
67+
public void setColumns(List<ColumnMigrationData> columns) {
68+
this.columns = columns;
69+
}
1770
}

sql-core/src/main/java/com/easy/query/core/util/EasyToSQLUtil.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -41,29 +41,29 @@ public static String getQuoteSQLName(SQLKeyword sqlKeyword, String val1, String
4141
return getQuoteSQLName(sqlKeyword, val1 + "." + val2);
4242
}
4343

44-
public static String getSchemaTableName(SQLKeyword sqlKeyword, EntityMetadata entityMetadata, String entityTableName, Function<String, String> schemaAs, Function<String, String> tableNameAs) {
45-
String tableName = doGetTableName(entityMetadata, entityTableName, tableNameAs);
46-
String schema = getSchema(sqlKeyword, entityMetadata, entityMetadata.getSchemaOrNull(), schemaAs, null);
44+
public static String getSchemaTableName(SQLKeyword sqlKeyword, String entitySchema, String entityTableName, Function<String, String> schemaAs, Function<String, String> tableNameAs) {
45+
String tableName = doGetTableName(entityTableName, tableNameAs);
46+
String schema = getSchema(sqlKeyword, entitySchema, schemaAs, null);
4747
if (EasyStringUtil.isNotBlank(schema)) {
4848
return getQuoteSQLName(sqlKeyword, schema) + "." + getQuoteSQLName(sqlKeyword, tableName);
4949
}
5050
return getQuoteSQLName(sqlKeyword, tableName);
5151
}
5252

53-
public static String getTableName(SQLKeyword sqlKeyword, EntityMetadata entityMetadata, String tableName, Function<String, String> tableNameAs) {
54-
return sqlKeyword.getQuoteName(doGetTableName(entityMetadata, tableName, tableNameAs));
53+
public static String getTableName(SQLKeyword sqlKeyword, String tableName, Function<String, String> tableNameAs) {
54+
return sqlKeyword.getQuoteName(doGetTableName(tableName, tableNameAs));
5555
}
5656

57-
public static String getSchema(SQLKeyword sqlKeyword, EntityMetadata entityMetadata, String schema, Function<String, String> schemaAs, String def) {
58-
String entitySchema = doGetSchema(entityMetadata, schema, schemaAs);
57+
public static String getSchema(SQLKeyword sqlKeyword, String schema, Function<String, String> schemaAs, String def) {
58+
String entitySchema = doGetSchema(schema, schemaAs);
5959
if (EasyStringUtil.isNotBlank(entitySchema)) {
6060
return getQuoteSQLName(sqlKeyword, entitySchema);
6161
}
6262
return def;
6363
}
6464

65-
public static String getSchemaWithoutDatabaseName(EntityMetadata entityMetadata, String schema, Function<String, String> schemaAs, String def) {
66-
String entitySchema = doGetSchema(entityMetadata, schema, schemaAs);
65+
public static String getSchemaWithoutDatabaseName( String schema, Function<String, String> schemaAs, String def) {
66+
String entitySchema = doGetSchema(schema, schemaAs);
6767
if (EasyStringUtil.isNotBlank(entitySchema)) {
6868
if (schema.contains(".")) {
6969
String[] split = entitySchema.split("\\.");
@@ -75,7 +75,7 @@ public static String getSchemaWithoutDatabaseName(EntityMetadata entityMetadata,
7575
return def;
7676
}
7777

78-
private static String doGetSchema(EntityMetadata entityMetadata, String schema, Function<String, String> schemaAs) {
78+
private static String doGetSchema(String schema, Function<String, String> schemaAs) {
7979
if (schema != null || schemaAs != null) {
8080
if (schemaAs != null) {
8181
return schemaAs.apply(schema);
@@ -85,18 +85,18 @@ private static String doGetSchema(EntityMetadata entityMetadata, String schema,
8585
return null;
8686
}
8787

88-
private static String doGetTableName(EntityMetadata entityMetadata, String tableName, Function<String, String> tableNameAs) {
88+
private static String doGetTableName(String tableName, Function<String, String> tableNameAs) {
8989
if (tableNameAs != null) {
9090
String applyTableName = tableNameAs.apply(tableName);
91-
return checkTableName(applyTableName, entityMetadata.getEntityClass());
91+
return checkTableName(applyTableName);
9292
}
93-
return checkTableName(tableName, entityMetadata.getEntityClass());
93+
return checkTableName(tableName);
9494
}
9595

96-
private static String checkTableName(String tableName, Class<?> entityClass) {
96+
private static String checkTableName(String tableName) {
9797

9898
if (tableName == null) {
99-
throw new EasyQueryException("table " + EasyClassUtil.getSimpleName(entityClass) + " cant found mapping table name");
99+
throw new EasyQueryException("table cant found mapping table name");
100100
}
101101
return tableName;
102102
}

sql-db-support/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>com.easy-query</groupId>
88
<artifactId>easy-query-all</artifactId>
9-
<version>3.0.88</version>
9+
<version>3.0.89</version>
1010
</parent>
1111

1212
<name>sql-db-support</name>

0 commit comments

Comments
 (0)