利用druid实现连接语句的条件获取

利用druid实现连接语句的条件获取

Posted by Qiyibaba on June 2, 2020
public class ParseMain {

    public static void main(String sql) {
        OracleStatementParser parser = new OracleStatementParser(sql);
        List<SQLStatement> statementList = parser.parseStatementList();
        OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor();
        for (SQLStatement statement : statementList) {
            statement.accept(visitor);
            Set<Relationship> relationships = visitor.getRelationships();
            HashMap<String, Set<String>> relation = new HashMap<String, Set<String>>();
            for (Relationship rs : relationships) {
                TableStat.Column left = rs.getLeft();
                TableStat.Column right = rs.getRight();
                addValue(relation,left.getTable().toString(),left.getName());
                addValue(relation,right.getTable().toString(),right.getName());
                System.out.println(String.format("%-30s %-15s %-30s %-15s", left.getTable(), left.getName(), right.getTable(), right.getName()));
                // System.out.println(rs);
            }
            System.out.println("----------------------");
            for (Map.Entry entry : relation.entrySet()){
                System.out.println(entry);
            }
        }
    }

    public static void addValue(HashMap<String, Set<String>> relation,String key,String value){
        Set<String> vars = relation.get(key);
        if (null == vars){
            vars = new HashSet<>();
        }

        vars.add(value);
        relation.put(key,vars);
    }
}