@Override
public String getQuote() {
return DATABASE_POSTGRESQL.equalsIgnoreCase(getDatabase()) ? "\"" : "`";
}
所以使用的时候需要在DemoSQLConfig
中添加一个方法
@Override
public String getDatabase() {
// TODO Auto-generated method stub
return DATABASE_POSTGRESQL;
}
修改AbstractSQLConfig.getConditionString
,785行
LIMIT count OFFSET page*count
不能改成 getWhereString 后面加 row_num > page*count AND row_num <= (page + 1)*count
需要将整个语句转变成子查询的模式
SELECT a.*
FROM (SELECT ROWNUM AS rid, t.*
FROM USERS t) a
Oracle 想要分页,需要子查询,不过如果子查询的话会多出一个字段。
修改AbstractSQLConfig.getSQLTable
,234行
@JSONField(serialize = false)
@Override
public String getSQLTable() {
String t = TABLE_KEY_MAP.containsKey(table) ? TABLE_KEY_MAP.get(table) : table;
return DATABASE_POSTGRESQL.equalsIgnoreCase(getDatabase()) ? t.toUpperCase() : t;
}
其中toLowerCase
改为toUpperCase
。
AbstractSQLConfig.getColumnString
,562行
for (int j = 0; j < ckeys.length; j++) {
index = ckeys[j].lastIndexOf(":"); //StringUtil.split返回数组中,子项不会有null
origin = index < 0 ? ckeys[j] : ckeys[j].substring(0, index);
origin = origin.toUpperCase();
alias = index < 0 ? null : ckeys[j].substring(index + 1);
....
origin取值的结果要变成大写,这样在前端请求的时候,会忽略字段的大小写。
过滤条件的字段getWhereItem
,1095行
key = getRealKey(method, key, false, true, verifyName, getQuote());
key的取值也变成大写
getOrderString
,483行
origin = index < 0 ? keys[i] : keys[i].substring(0, index);
origin = origin.toUpperCase();
getRegExpString
, 1254行
@JSONField(serialize = false)
public String getRegExpString(String key, String value) {
return getKey(key) + " REGEXP " + getValue(value);
}
改为
return "regexp_like(" + getKey(key) + " , " + getValue(value) + ")";
getKey
,1119行
public String getKey(String key) {
String q = getQuote();
return (isKeyPrefix() ? getAlias() + "." : "") + q + key + q;
}
改为
return (isKeyPrefix() ? getAlias() + "." : "") + q + key.toUpperCase() + q;
从A表店铺(c_store)中,通过外键字段ID(modifierid)关联查询B表用户(Users)的数据
确保相关的实际表名已经配置好,两个表的接口都能单独查询。
请求:
{
"Store":{
"@column":"id,name,modifierid"
},
"Users":{
"id@":"Store/MODIFIERID",
"@column":"id,name"
}
}
首先,主数据Store
的字段modifierid
需要查询出来。其次,Users
表的关联路径Store/MODIFIERID
中modifierid
字段需要大写。
响应:
{
"[]": [
{
"Store": {
"CODE": "0003",
"ID": 4,
"NAME": "测试"
},
"Users": {
"C_STORE_ID": 4,
"ID": 1803,
"NAME": "测试"
}
},
....
{
"Store": {
"CODE": "999999",
"ID": 1,
"NAME": "总部仓库"
},
"Users": {
"C_STORE_ID": 1,
"ID": 1802,
"NAME": "admin"
}
}
],
"code": 200,
"msg": "success"
}