add oracle visitor demo.

This commit is contained in:
wenshao
2017-09-28 17:27:35 +08:00
parent a24df56b5a
commit bdb79ec48e
@@ -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<SQLStatement> 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<String, SQLTableSource> aliasMap = new HashMap<String, SQLTableSource>();
public boolean visit(OracleSelectTableReference x) {
String alias = x.getAlias();
aliasMap.put(alias, x);
return true;
}
public Map<String, SQLTableSource> getAliasMap() {
return aliasMap;
}
}
}