From bdb79ec48e1fd208a8a4e09f3ad67bc23ce652a1 Mon Sep 17 00:00:00 2001 From: wenshao Date: Thu, 28 Sep 2017 17:27:35 +0800 Subject: [PATCH] add oracle visitor demo. --- .../druid/demo/sql/OracleVisitorDemo.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/test/java/com/alibaba/druid/demo/sql/OracleVisitorDemo.java diff --git a/src/test/java/com/alibaba/druid/demo/sql/OracleVisitorDemo.java b/src/test/java/com/alibaba/druid/demo/sql/OracleVisitorDemo.java new file mode 100644 index 0000000000..ca49c8f2ba --- /dev/null +++ b/src/test/java/com/alibaba/druid/demo/sql/OracleVisitorDemo.java @@ -0,0 +1,42 @@ +package com.alibaba.druid.demo.sql; + +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLExpr; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.ast.statement.SQLTableSource; +import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectTableReference; +import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitorAdapter; +import com.alibaba.druid.util.JdbcConstants; +import junit.framework.TestCase; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class OracleVisitorDemo extends TestCase { + public void test_for_demo() throws Exception { + String sql = "select * from mytable a where a.id = 3"; + List stmtList = SQLUtils.parseStatements(sql, JdbcConstants.ORACLE); + + MyOracleVisitor visitor = new MyOracleVisitor(); + for (SQLStatement stmt : stmtList) { + stmt.accept(visitor); + } + + SQLTableSource tableSource = visitor.getAliasMap().get("a"); + System.out.println(tableSource); + } + + public static class MyOracleVisitor extends OracleASTVisitorAdapter { + private Map aliasMap = new HashMap(); + public boolean visit(OracleSelectTableReference x) { + String alias = x.getAlias(); + aliasMap.put(alias, x); + return true; + } + + public Map getAliasMap() { + return aliasMap; + } + } +}