@@ -130,6 +130,11 @@ public abstract class AbstractSQLConfig<T extends Object> implements SQLConfig<T
130
130
public static Pattern PATTERN_RANGE ;
131
131
public static Pattern PATTERN_FUNCTION ;
132
132
133
+ /**
134
+ * 表 SCHEMA 映射
135
+ */
136
+ public static Map <String , String > TABLE_SCHEMA_MAP ;
137
+
133
138
/**
134
139
* 表名映射,隐藏真实表名,对安全要求很高的表可以这么做
135
140
*/
@@ -157,6 +162,19 @@ public abstract class AbstractSQLConfig<T extends Object> implements SQLConfig<T
157
162
// TODO 改成更好的正则,校验前面为单词,中间为操作符,后面为值
158
163
PATTERN_FUNCTION = Pattern .compile ("^[A-Za-z0-9%,:_@&~`!=\\ <\\ >\\ |\\ [\\ ]\\ {\\ } /\\ .\\ +\\ -\\ *\\ ^\\ ?\\ (\\ )\\ $]+$" );
159
164
165
+ TABLE_SCHEMA_MAP = new HashMap <>();
166
+ TABLE_SCHEMA_MAP .put (Table .class .getSimpleName (), DEFAULT_SCHEMA );
167
+ TABLE_SCHEMA_MAP .put (Column .class .getSimpleName (), DEFAULT_SCHEMA );
168
+ TABLE_SCHEMA_MAP .put (PgClass .class .getSimpleName (), DEFAULT_SCHEMA );
169
+ TABLE_SCHEMA_MAP .put (PgAttribute .class .getSimpleName (), DEFAULT_SCHEMA );
170
+ TABLE_SCHEMA_MAP .put (SysTable .class .getSimpleName (), DEFAULT_SCHEMA );
171
+ TABLE_SCHEMA_MAP .put (SysColumn .class .getSimpleName (), DEFAULT_SCHEMA );
172
+ TABLE_SCHEMA_MAP .put (ExtendedProperty .class .getSimpleName (), DEFAULT_SCHEMA );
173
+ TABLE_SCHEMA_MAP .put (AllTable .class .getSimpleName (), DEFAULT_SCHEMA );
174
+ TABLE_SCHEMA_MAP .put (AllColumn .class .getSimpleName (), DEFAULT_SCHEMA );
175
+ TABLE_SCHEMA_MAP .put (AllTableComment .class .getSimpleName (), DEFAULT_SCHEMA );
176
+ TABLE_SCHEMA_MAP .put (AllColumnComment .class .getSimpleName (), DEFAULT_SCHEMA );
177
+
160
178
TABLE_KEY_MAP = new HashMap <>();
161
179
TABLE_KEY_MAP .put (Table .class .getSimpleName (), Table .TABLE_NAME );
162
180
TABLE_KEY_MAP .put (Column .class .getSimpleName (), Column .TABLE_NAME );
@@ -1305,7 +1323,7 @@ public String getSchema() {
1305
1323
@ Override
1306
1324
public String getSQLSchema () {
1307
1325
String table = getTable ();
1308
- //强制,避免因为全局默认的 @schema 自动填充进来,导致这几个类的 schema 为 sys 等其它值
1326
+ // FIXME 全部默认填充判断是 系统表 则不填充 // 强制,避免因为全局默认的 @schema 自动填充进来,导致这几个类的 schema 为 sys 等其它值
1309
1327
if (Table .TAG .equals (table ) || Column .TAG .equals (table )) {
1310
1328
return SCHEMA_INFORMATION ; //MySQL, PostgreSQL, SQL Server 都有的
1311
1329
}
@@ -1320,8 +1338,11 @@ public String getSQLSchema() {
1320
1338
return "" ; //Oracle, Dameng 的 all_tables, dba_tables 和 all_tab_columns, dba_columns 表好像不属于任何 Schema
1321
1339
}
1322
1340
1323
- String sch = getSchema ();
1324
- return sch == null ? DEFAULT_SCHEMA : sch ;
1341
+ String sch = getSchema (); // 前端传参 @schema 优先
1342
+ if (sch == null ) {
1343
+ sch = TABLE_SCHEMA_MAP .get (table ); // 其次 Access 表 alias 和 schema 配置
1344
+ }
1345
+ return sch == null ? DEFAULT_SCHEMA : sch ; // 最后代码默认兜底配置
1325
1346
}
1326
1347
@ Override
1327
1348
public AbstractSQLConfig setSchema (String schema ) {
0 commit comments