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,针对上面不同的表达式,应该给出相应的处理。