背景需求:
一个查询参数,查询全站数据
场景一:网站首页的搜索,一个搜索框要查询整个网站中相关的数据,
处理这个需求有两个步骤:
场景二:管理后台,一个输入框输入一个自己的表达式,精确匹配出相关数据,
这种场景的数据处理流程:
下面主要介绍的是一个场景二的代码案例:
查询字符串:
String str = "字符1 && 字符2 && 字符3 || 字符4 && 字符5 || 字符6";
处理得到结果:
and ((title=? and title=? and title=?) or(title=? and title=?) or(title=?))
["字符1","字符2","字符3","字符4","字符5","字符6"]
Java字符串处理:
public static String r(String str){
StringBuffer sql = new StringBuffer();
List<String> para = new ArrayList<>();
sql.append(" and (");
for (String x : str.split("[|][|]")) {
sql.append("(");
for (String t : x.split("&&")) {
sql.append("title=? and ");
para.add(t.trim());
}
sql.delete(sql.length()-5, sql.length());
sql.append(") or");
}
sql.delete(sql.length()-3,sql.length());
sql.append(")");
Gson gson = new Gson();
System.out.println(sql.toString());
System.out.println(gson.toJson(para));
return sql.toString();
}
另外注意,Java中的 竖线分割应该如下使用
str.split("[|]") 或者 str.split("[|][|]")
更多个性查询规则,可相应定制,
博客地址:https://1216.top 码云/GitHub:https://gitee.com/tc608