背景
将查询条件解析成指定的json结构
输入 ==>
( age > 2 and ( ( birthday IS NOT NULL ) or ( sex != 男 ) ) ) or ( age < 20 ) or ( name LIKE '%kmq%' )
<== 返回
{
"children": [{
"fieldSymbol": "age",
"operationSymbol": ">",
"value": "2",
"isNot": "",
"children": [{
"fieldSymbol": "birthday",
"operationSymbol": "IS NOT NULL",
"value": "",
"isNot": ""
}
....
难点
复杂的查询sql情况太多。一个个处理手写蛮烦费时间。
解决
借助第三方解析库JSqlParser,很好的解决了sql解析问题。
@Test
public void test3() throws JSQLParserException {
String sql = "select id,name from city where ( age > 2 and ( ( birthday IS NOT NULL ) or ( sex != 男 ) ) ) or ( age < 20 ) or ( name LIKE '%kmq%' )";
Select select = (Select) CCJSqlParserUtil.parse(sql);
PlainSelect plainSelect = (PlainSelect) select.getSelectBody();
System.out.println();
}