Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit42c39eb

Browse files
authored
README.MD
使用Oracle作为数据库的时候,源码需要修改的地方,第二条,需要作者修改下,其他改动均已修改测试过。
1 parent338124b commit42c39eb

File tree

1 file changed

+185
-0
lines changed
  • APIJSON-Java-Server/APIJSONDemo_oracle

1 file changed

+185
-0
lines changed
Lines changed: 185 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,185 @@
1+
#针对Oracle,APIJSON需要修改源码
2+
3+
##1. 处理`字段括号`的问题,`AbstractSQLConfig.getQuote`,196行
4+
5+
```java
6+
@Override
7+
publicString getQuote() {
8+
returnDATABASE_POSTGRESQL.equalsIgnoreCase(getDatabase())?"\"":"`";
9+
}
10+
```
11+
12+
所以使用的时候需要在`DemoSQLConfig`中添加一个方法
13+
14+
```java
15+
@Override
16+
publicString getDatabase() {
17+
// TODO Auto-generated method stub
18+
returnDATABASE_POSTGRESQL;
19+
}
20+
```
21+
22+
23+
24+
25+
##2. 修改`分页逻辑`
26+
27+
修改`AbstractSQLConfig.getConditionString`,785行
28+
29+
```java
30+
LIMIT countOFFSET page*count
31+
不能改成 getWhereString 后面加 row_num> page*countAND row_num<= (page+1)*count
32+
需要将整个语句转变成子查询的模式
33+
SELECT a.*
34+
FROM (SELECTROWNUMAS rid, t.*
35+
FROMUSERS t) a
36+
```
37+
38+
Oracle 想要分页,需要子查询,不过如果子查询的话会多出一个字段。
39+
40+
41+
42+
43+
##3. 表名默认是小写,需要改成大写,否则会提示找不到表名的错误
44+
45+
修改`AbstractSQLConfig.getSQLTable`,234行
46+
47+
```java
48+
@JSONField(serialize=false)
49+
@Override
50+
publicString getSQLTable() {
51+
String t=TABLE_KEY_MAP.containsKey(table)?TABLE_KEY_MAP.get(table): table;
52+
returnDATABASE_POSTGRESQL.equalsIgnoreCase(getDatabase())? t.toUpperCase(): t;
53+
}
54+
```
55+
56+
其中`toLowerCase`改为`toUpperCase`
57+
58+
`AbstractSQLConfig.getColumnString`,562行
59+
60+
```java
61+
for (int j=0; j< ckeys.length; j++) {
62+
index= ckeys[j].lastIndexOf(":");//StringUtil.split返回数组中,子项不会有null
63+
origin= index<0? ckeys[j]: ckeys[j].substring(0, index);
64+
origin= origin.toUpperCase();
65+
alias= index<0?null: ckeys[j].substring(index+1);
66+
....
67+
```
68+
69+
origin取值的结果要变成大写,这样在前端请求的时候,会忽略字段的大小写。
70+
71+
72+
73+
##4. 字段名被引号括起来之后,Oracle区分字段的大小写,需要将字段大写
74+
75+
过滤条件的字段`getWhereItem`,1095
76+
77+
```java
78+
key= getRealKey(method, key,false,true, verifyName, getQuote());
79+
```
80+
81+
key的取值也变成大写
82+
83+
84+
85+
##5.Order by时,字段名大写
86+
87+
`getOrderString`,483
88+
89+
```java
90+
origin= index<0? keys[i]: keys[i].substring(0, index);
91+
origin= origin.toUpperCase();
92+
```
93+
94+
95+
96+
##6.@Combine时,REGEXP函数需要修改
97+
98+
`getRegExpString`,1254
99+
100+
```java
101+
@JSONField(serialize=false)
102+
publicString getRegExpString(String key,String value) {
103+
return getKey(key)+" REGEXP"+ getValue(value);
104+
}
105+
改为
106+
return"regexp_like("+ getKey(key)+" ,"+ getValue(value)+")";
107+
```
108+
109+
110+
111+
##7.@Group
112+
113+
`getKey`,1119
114+
115+
```java
116+
publicString getKey(String key) {
117+
String q= getQuote();
118+
return (isKeyPrefix()? getAlias()+".":"")+ q+ key+ q;
119+
}
120+
改为
121+
return (isKeyPrefix()? getAlias()+".":"")+ q+ key.toUpperCase()+ q;
122+
```
123+
124+
125+
126+
##8. 关联查询须知
127+
128+
A表店铺(c_store)中,通过外键字段ID(modifierid)关联查询B表用户(Users)的数据
129+
130+
确保相关的实际表名已经配置好,两个表的接口都能单独查询。
131+
132+
请求:
133+
134+
```java
135+
{
136+
"Store":{
137+
"@column":"id,name,modifierid"
138+
},
139+
"Users":{
140+
"id@":"Store/MODIFIERID",
141+
"@column":"id,name"
142+
}
143+
}
144+
```
145+
146+
147+
148+
首先,主数据`Store`的字段`modifierid`需要查询出来。其次,`Users`表的关联路径`Store/MODIFIERID`中`modifierid`字段需要大写。
149+
150+
响应:
151+
152+
```json
153+
{
154+
"[]": [
155+
{
156+
"Store": {
157+
"CODE":"0003",
158+
"ID":4,
159+
"NAME":"测试"
160+
},
161+
"Users": {
162+
"C_STORE_ID":4,
163+
"ID":1803,
164+
"NAME":"测试"
165+
}
166+
},
167+
....
168+
{
169+
"Store": {
170+
"CODE":"999999",
171+
"ID":1,
172+
"NAME":"总部仓库"
173+
},
174+
"Users": {
175+
"C_STORE_ID":1,
176+
"ID":1802,
177+
"NAME":"admin"
178+
}
179+
}
180+
],
181+
"code":200,
182+
"msg":"success"
183+
}
184+
```
185+

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp