JSqlParser使用

发布于 2020-09-07 00:00:00

JSqlParser是什么

JSqlParser能够解析SQL语句并它翻译成一个Java类层次。它产生的层次可以使用访问者模式导航。

开源地址:https://github.com/JSQLParser/JSqlParser

maven配置

<dependency>
    <groupId>com.github.jsqlparser</groupId>
    <artifactId>jsqlparser</artifactId>
    <version>3.1</version>
</dependency>

例子

    public static void create() throws Exception {
        Insert insert = (Insert) CCJSqlParserUtil.parse("insert into view (col1) values (1)");
        insert.getColumns().add(new Column("col2"));
        insert.getItemsList().accept(new ItemsListVisitor() {
            @Override
            public void visit(SubSelect subSelect) {
                throw new UnsupportedOperationException("Not supported yet.");
            }

            @Override
            public void visit(ExpressionList expressionList) {
                expressionList.getExpressions().add(new LongValue(5));
            }

            @Override
            public void visit(MultiExpressionList multiExprList) {
                throw new UnsupportedOperationException("Not supported yet.");
            }
        });
        insert.getColumns().add(new Column("col3"));
        ((ExpressionList) insert.getItemsList()).getExpressions().add(new LongValue(10));
    }

1、条件表达式

如:AndExpression(and),OrExpression(or)

2、关系表达式

如:EqualsTo(=),MinorThan(<),GreaterThan(>),……

3、算术表达式

如:Addition(+),Subtraction(-),Multiplication(*),Division(/),……

4、列表达式

如:Column

5、case表达式

如:CaseExpression

6、值表达式

如:StringValue,DateValue,LongValue,DoubleValue,……

7、函数表达式

如:Function

8、参数表达式

如:JdbcParameter,JdbcNameParameter,……

如果要定制ExpressionVisitor,针对上面不同的表达式,应该给出相应的处理。