mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
add oracle visitor demo.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user