解析REST访问的子句查询



我正在接收一个从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);

最新更新