首先,我们要创建一个SQL解析监听器

public class ParseListener extends PlSqlParserBaseListener {

    @Override
    public void enterSql_script(PlSqlParser.Sql_scriptContext ctx) {
        findTarget(ctx);
    }

    private void findTarget(ParserRuleContext ctx){
        ctx.children.forEach(parseTree -> {
            if(parseTree instanceof PlSqlParser.Table_ref_aux_internal_oneContext){
                PlSqlParser.Table_ref_aux_internal_oneContext context= (PlSqlParser.Table_ref_aux_internal_oneContext) parseTree;
                System.out.println(context.getText());
            }
            else{
                if(parseTree instanceof ParserRuleContext){
                    findTarget((ParserRuleContext)parseTree);
                }
            }
        });
    }

}

main函数:

public class Test {
    public static void main(String[] args) {
        String sql="select * from user u,foo where u.id=12";
        PlSqlLexer lexer = new PlSqlLexer(CharStreams.fromString(sql));
        PlSqlParser parser = new PlSqlParser(new CommonTokenStream(lexer));

        ParseTreeWalker.DEFAULT.walk(new ParseListener(),parser.sql_script());


    }
}