@@ -130,6 +130,11 @@ public abstract class AbstractSQLConfig<T extends Object> implements SQLConfig<T
130130public static Pattern PATTERN_RANGE ;
131131public static Pattern PATTERN_FUNCTION ;
132132
133+ /**
134+ * 表 SCHEMA 映射
135+ */
136+ public static Map <String , String > TABLE_SCHEMA_MAP ;
137+
133138/**
134139 * 表名映射,隐藏真实表名,对安全要求很高的表可以这么做
135140 */
@@ -157,6 +162,19 @@ public abstract class AbstractSQLConfig<T extends Object> implements SQLConfig<T
157162// TODO 改成更好的正则,校验前面为单词,中间为操作符,后面为值
158163PATTERN_FUNCTION = Pattern .compile ("^[A-Za-z0-9%,:_@&~`!=\\ <\\ >\\ |\\ [\\ ]\\ {\\ } /\\ .\\ +\\ -\\ *\\ ^\\ ?\\ (\\ )\\ $]+$" );
159164
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+
160178TABLE_KEY_MAP = new HashMap <>();
161179TABLE_KEY_MAP .put (Table .class .getSimpleName (), Table .TABLE_NAME );
162180TABLE_KEY_MAP .put (Column .class .getSimpleName (), Column .TABLE_NAME );
@@ -1305,7 +1323,7 @@ public String getSchema() {
13051323@ Override
13061324public String getSQLSchema () {
13071325String table = getTable ();
1308- //强制,避免因为全局默认的 @schema 自动填充进来,导致这几个类的 schema 为 sys 等其它值
1326+ // FIXME 全部默认填充判断是 系统表 则不填充 // 强制,避免因为全局默认的 @schema 自动填充进来,导致这几个类的 schema 为 sys 等其它值
13091327if (Table .TAG .equals (table ) || Column .TAG .equals (table )) {
13101328return SCHEMA_INFORMATION ; //MySQL, PostgreSQL, SQL Server 都有的
13111329}
@@ -1320,8 +1338,11 @@ public String getSQLSchema() {
13201338return "" ; //Oracle, Dameng 的 all_tables, dba_tables 和 all_tab_columns, dba_columns 表好像不属于任何 Schema
13211339}
13221340
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 ; // 最后代码默认兜底配置
13251346}
13261347@ Override
13271348public AbstractSQLConfig setSchema (String schema ) {
0 commit comments