查询条件拼接SQL_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 查询条件拼接SQL

查询条件拼接SQL

 2013/7/15 18:17:19  jeremy102  程序员俱乐部  我要评论(0)
  • 摘要:publicstaticvoidquery()throwsParseException{StringjsonStr="{applyNo:{like:'A001'},name:{=:'张三'},amt:{>:600,oper:'or',<:1000}}";JSONObjectjson=newJSONObject(jsonStr);Iterator<String>iter=json.keys();StringBufferjpql=newStringBuffer
  • 标签:SQL
class="java" name="code">
public static void query() throws ParseException {
		String jsonStr = "{applyNo:{like:'A001'}, name:{=:'张三'}, amt:{>: 600, oper: 'or', <: 1000}}";

		JSONObject json = new JSONObject(jsonStr);

		Iterator<String> iter = json.keys();

		StringBuffer jpql = new StringBuffer("select * from table");

		// 放置参数
		List<Object> params = new ArrayList<Object>();
		int index = 0;
		
		boolean firstFlag = true;
		while (iter.hasNext()) {
			// 查询字段
			String key = iter.next();
			JSONObject obj = json.getJSONObject(key);

			if (firstFlag) {
				firstFlag = false;
				jpql.append(" where ");
			} else {
				jpql.append(" and ");
			}

			jpql.append(key).append(" ");

			Iterator<String> valIter = obj.keys();

			while (valIter.hasNext()) {
				// 查询条件
				String valKey = valIter.next();

				// 不是caozuofu.html" target="_blank">操作符,就执行
				if (!"oper".equals(valKey)) {

					Object valObj = obj.get(valKey);

					jpql.append(valKey).append(" ?_").append(index).append(" ");

					if (valIter.hasNext()) {
						Object oper = obj.get("oper");
						jpql.append(" ").append(oper).append(" ");
					}
					
					params.add(valObj);
					index++;
				}
			}

		}

		System.out.println(jpql);
		System.out.println(Arrays.toString(params.toArray()));
	}
发表评论
用户名: 匿名