我正在接收一个从rest api获取的子句,我应该转换属性,因此我需要使用逻辑和....例如:
String where = "prop = 1 and prop2 = 'ssdf' or date > 20121204";
是否有任何Java库将子句转换为具有单独条件和操作员的Java对象?
最后我找到了这个库:https://github.com/jsqlparser/jsqlparser
似乎非常适合查询解析
使用jsqlparser可以使用已经实现的实用程序方法来解析您的条件,例如您的where子句:
String where = "prop = 1 and prop2 = 'ssdf' or date > 20121204";
Expression expr = CCJSqlParserUtil.parseCondExpression(where);
System.out.println(expr);
这与 jsqlparser v0.9.9.x (https://github.com/jsqlparser/jsqlparser)
然后,您有一个具有分离的操作员,和ors,值的对象树。您可以使用ExpressionVisitorAdapter进行遍历,例如
ExpressionVisitorAdapter visitor = new ExpressionVisitorAdapter() {
@Override
public void visit(Column column) {
System.out.println(column);
}
};
expr.accept(visitor);