Skip to content

Commit 8b5182e

Browse files
committed
Server:新增Number,String的+,-
1 parent 6c0e571 commit 8b5182e

2 files changed

Lines changed: 91 additions & 39 deletions

File tree

  • APIJSON(Android)/APIJSON(ADT)/APIJSONDemoApp/src/apijson/demo
  • APIJSON(Server)/APIJSON(Eclipse_JEE)/src/main/java/zuo/biao/apijson/server

APIJSON(Android)/APIJSON(ADT)/APIJSONDemoApp/src/apijson/demo/RequestUtil.java

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,15 +54,21 @@ public static JSONObject newPostRequest(boolean encode) {
5454
}
5555

5656
public static JSONObject newPutRequest(long id, boolean encode) {
57-
Moment data = new Moment(id <= 0 ? DEFAULT_MOMENT_ID : id);
58-
// data.setContent(context.getString(R.string.apijson_info));//一般可用这种方式,encode是为了展示方便
59-
List<Long> list = new ArrayList<>();
60-
list.add((long) 10000);
61-
list.add((long) 10001);
62-
JSONObject momentObject = new JSONObject(data, encode);
63-
momentObject.put("praiseUserIdList+", list, encode);//测试 +和- 通过
64-
momentObject.put("content", context.getString(R.string.apijson_info), encode);//测试 +和- 通过
65-
return new JSONRequest(Moment.class.getSimpleName(), momentObject, encode).setTag(Moment.class.getSimpleName());
57+
// Moment data = new Moment(id <= 0 ? DEFAULT_MOMENT_ID : id);
58+
// // data.setContent(context.getString(R.string.apijson_info));//一般可用这种方式,encode是为了展示方便
59+
// List<Long> list = new ArrayList<>();
60+
// list.add((long) 10000);
61+
// list.add((long) 10001);
62+
// JSONObject momentObject = new JSONObject(data, encode);
63+
//// momentObject.put("praiseUserIdList+", list, encode);//测试 +和- 通过
64+
//// momentObject.put("content-", "00", encode);//context.getString(R.string.apijson_info), encode);//测试 +和- 通过
65+
// return new JSONRequest(Moment.class.getSimpleName(), momentObject, encode).setTag(Moment.class.getSimpleName());
66+
67+
//测试Number类型+和-通过
68+
User data = new User(id <= 0 ? DEFAULT_USER_ID : id);
69+
JSONObject object = new JSONObject(data, encode);
70+
object.put("sex-", false, encode);
71+
return new JSONRequest(User.class.getSimpleName(), object, encode).setTag(User.class.getSimpleName());
6672
}
6773

6874
public static JSONObject newDeleteRequest(long id, boolean encode) {

APIJSON(Server)/APIJSON(Eclipse_JEE)/src/main/java/zuo/biao/apijson/server/QueryConfig.java

Lines changed: 76 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -200,14 +200,16 @@ public static String getLimitString(int page, int count) {
200200
return count <= 0 ? "" : " LIMIT " + page*count + ", " + count;
201201
}
202202

203-
/**获取筛选方法
203+
//WHERE <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
204+
/**获取WHERE
204205
* @return
205206
* @throws Exception
206207
*/
207208
public String getWhereString() throws Exception {
208209
return getWhereString(getMethod(), getWhere());
209210
}
210-
/**获取筛选方法
211+
/**获取WHERE
212+
* @param method
211213
* @param where
212214
* @return
213215
* @throws Exception
@@ -221,8 +223,9 @@ public static String getWhereString(RequestMethod method, Map<String, Object> wh
221223
}
222224

223225
String whereString = " WHERE ";
224-
Object value;
226+
boolean isFirst = true;
225227
int keyType = 0;// 0 - =; 1 - $, 2 - {}
228+
Object value;
226229
for (String key : set) {
227230
Log.d(TAG, "getWhereString key = " + key);
228231
//避免筛选到全部 value = key == null ? null : where.get(key);
@@ -239,47 +242,40 @@ public static String getWhereString(RequestMethod method, Map<String, Object> wh
239242
} else if (key.endsWith("{}")) {
240243
keyType = 2;
241244
}
242-
243245
value = where.get(key);
246+
key = RequestParser.getRealKey(method, key, false);
244247

245-
try {
246-
key = RequestParser.getRealKey(method, key, false);
247-
} catch (Exception e) {
248-
Log.e(TAG, "getObject getWhereString try { key = RequestParser.getRealKey(key, false);"
249-
+ " >> } catch (Exception e) {");
250-
e.printStackTrace();
251-
}
248+
whereString += (isFirst ? "" : " AND ") + (key + (keyType == 1 ? " LIKE '" + value + "'" : (keyType == 2
249+
? getRangeString(key, value) : "='" + value + "'") ));
252250

253-
whereString += (key + (keyType == 1 ? " LIKE '" + value + "'" : (keyType == 2
254-
? getRangeString(key, value) : "='" + value + "'") ) + " AND ");
255-
}
256-
if (whereString.endsWith("AND ")) {
257-
whereString = whereString.substring(0, whereString.length() - "AND ".length());
251+
isFirst = false;
258252
}
253+
259254
if (whereString.trim().endsWith("WHERE") == false) {
260255
return whereString;
261256
}
262257
}
263258
return "";
264259
}
265-
/**where key > 'key0' and key <= 'key1' and ...
260+
261+
/**WHERE key > 'key0' AND key <= 'key1' AND ...
266262
* @param key
267263
* @param range "condition0,condition1..."
268-
* @return key > 'key0' and key <= 'key1' and ...
264+
* @return key condition0 AND key condition1 AND ...
269265
*/
270266
public static String getRangeString(String key, Object range) {
271267
if (range instanceof JSONArray) {
272268
return getInString(((JSONArray) range).toArray());
273269
}
274270
if (range instanceof String) {
275-
return ((String) range).replaceAll(",", " AND " + key);//非Number类型的可能需要客户端拼接成 < 'value0', >= 'value1'这种
271+
return ((String) range).replaceAll(",", " AND " + key);//非Number类型需要客户端拼接成 < 'value0', >= 'value1'这种
276272
}
277273

278274
throw new IllegalArgumentException("\"key{}\":range 中range只能是 用','分隔条件的字符串 或者 可取选项JSONArray!");
279275
}
280-
/**where key in ('key0', 'key1', ... )
276+
/**WHERE key IN ('key0', 'key1', ... )
281277
* @param in
282-
* @return in ('key0', 'key1', ... )
278+
* @return IN ('key0', 'key1', ... )
283279
*/
284280
public static String getInString(Object[] in) {
285281
String inString = "";
@@ -290,42 +286,92 @@ public static String getInString(Object[] in) {
290286
}
291287
return " IN (" + inString + ") ";
292288
}
289+
//WHERE >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
293290

294291

295-
/**获取筛选方法
292+
//SET <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
293+
/**获取SET
296294
* @return
295+
* @throws Exception
297296
*/
298-
public String getSetString() {
299-
return getSetString(where);
297+
public String getSetString() throws Exception {
298+
return getSetString(getMethod(), getWhere());
300299
}
301-
/**获取筛选方法
300+
/**获取SET
301+
* @param method
302302
* @param where
303303
* @return
304+
* @throws Exception
304305
*/
305-
public static String getSetString(Map<String, Object> where) {
306+
public static String getSetString(RequestMethod method, Map<String, Object> where) throws Exception {
306307
Set<String> set = where == null ? null : where.keySet();
307308
if (set != null && set.size() > 0) {
308309
if (where.containsKey(Table.ID) == false) {
309310
throw new IllegalArgumentException("请设置" + Table.ID + "!");
310311
}
311312
String setString = " SET ";
313+
boolean isFirst = true;
314+
int keyType = 0;// 0 - =; 1 - +, 2 - -
315+
Object value;
312316
for (String key : set) {
313317
//避免筛选到全部 value = key == null ? null : where.get(key);
314318
if (key == null || Table.ID.equals(key)) {
315319
continue;
316320
}
317-
setString += (key + "='" + where.get(key) + "' ,");
318-
}
319-
if (setString.endsWith(",")) {
320-
setString = setString.substring(0, setString.length() - 1);
321+
322+
if (key.endsWith("+")) {
323+
keyType = 1;
324+
} else if (key.endsWith("-")) {
325+
keyType = 2;
326+
}
327+
value = where.get(key);
328+
key = RequestParser.getRealKey(method, key, false);
329+
330+
setString += (isFirst ? "" : ", ") + (key + "=" + (keyType == 1 ? getAddString(key, value) : (keyType == 2
331+
? getRemoveString(key, value) : "'" + value + "'") ) );
332+
333+
isFirst = false;
321334
}
335+
322336
if (setString.trim().endsWith("SET") == false) {
323337
return setString + " WHERE " + Table.ID + "='" + where.get(Table.ID) + "' ";
324338
}
325339
}
326340
return "";
327341
}
328342

343+
/**SET key = CONCAT (key, 'value')
344+
* @param key
345+
* @param value
346+
* @return CONCAT (key, 'value')
347+
* @throws IllegalArgumentException
348+
*/
349+
public static String getAddString(String key, Object value) throws IllegalArgumentException {
350+
if (value instanceof Number) {
351+
return key + " + " + value;
352+
}
353+
if (value instanceof String) {
354+
return " CONCAT (" + key + ", '" + value + "') ";
355+
}
356+
throw new IllegalArgumentException(key + "+ 对应的值 " + value + " 不是Number,String,Array中的任何一种!");
357+
}
358+
/**SET key = REPLACE (key, 'value', '')
359+
* @param key
360+
* @param value
361+
* @return REPLACE (key, 'value', '')
362+
* @throws IllegalArgumentException
363+
*/
364+
public static String getRemoveString(String key, Object value) throws IllegalArgumentException {
365+
if (value instanceof Number) {
366+
return key + " - " + value;
367+
}
368+
if (value instanceof String) {
369+
return " REPLACE (" + key + ", '" + value + "', '') ";
370+
}
371+
throw new IllegalArgumentException(key + "- 对应的值 " + value + " 不是Number,String,Array中的任何一种!");
372+
}
373+
//SET >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
374+
329375

330376
/**获取查询配置
331377
* @param table

0 commit comments

Comments
 (0)