JSqlParser使用

2020.09.07 - GJX

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

- END -

190
0

文章标签: