2021SC@SDUSC
这一篇博客来分析一下SQLConfig,方便进行后续对AbstractSQLConfig的分析
String DATABASE_MYSQL = "MYSQL";
String DATABASE_POSTGRESQL = "POSTGRESQL";
String DATABASE_SQLSERVER = "SQLSERVER";
String DATABASE_ORACLE = "ORACLE";
String DATABASE_DB2 = "DB2";
String DATABASE_CLICKHOUSE = "CLICKHOUSE";
String SCHEMA_INFORMATION = "information_schema"; //MySQL, PostgreSQL, SQL Server 都有的系统模式
String SCHEMA_SYS = "sys"; //SQL Server 系统模式
String TABLE_SCHEMA = "table_schema";
String TABLE_NAME = "table_name";
首先是定义了要用到的一些字符串名称,用DATABASE_MYSQL代指字符串MYSQL,方便后续使用,这是一个很好的方式,在需要用的特定字符串上,这样就添加了备注信息。
int TYPE_CHILD = 0;
int TYPE_ITEM = 1;
int TYPE_ITEM_CHILD_0 = 2;
boolean isMySQL();
boolean isPostgreSQL();
boolean isSQLServer();
boolean isOracle();
boolean isDb2();
boolean isClickHouse();
boolean limitSQLCount(); //用来给 Table, Column 等系统属性表来绕过 MAX_SQL_COUNT 等限制
接下来定义了一些boolean函数
在SQLConfig中,定义的方法由以下代码实现。
代码分析
boolean limitSQLCount(); //用来给 Table, Column 等系统属性表来绕过 MAX_SQL_COUNT 等限制
@Override
public boolean limitSQLCount() {
return Log.DEBUG == false || AbstractVerifier.SYSTEM_ACCESS_MAP.containsKey(getTable()) == false;
}这里AbstractSQLConfig重写了limitSQLCount()
用到了 apijson.Log 里面的 Log.DEBUG和AbstractVerifier.SYSTEM_ACCESS_MAP.containsKey(getTable())
进行判断后返回他们的或结果
后面同样是重写了SQLConfig的方法,后面三百到六百行都是对SQLConfig方法的重写ÿ