首页 > 数据库技术 > 详细

使用JSQLParser解析SQL中涉及到的表

时间:2019-02-12 12:40:31      阅读:548      评论:0      收藏:0      [点我收藏+]

首先添加Maven依赖:

<dependency>
    <groupId>com.github.jsqlparser</groupId>
    <artifactId>jsqlparser</artifactId>
    <version>1.2</version>
</dependency>

然后使用下面的样例进行测试:

package com.zifeiy.test.sqlaffair;


import java.util.Iterator;
import java.util.List;

import net.sf.jsqlparser.JSQLParserException;
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
import net.sf.jsqlparser.statement.Statement;
import net.sf.jsqlparser.statement.select.Select;
import net.sf.jsqlparser.util.TablesNamesFinder;

public class JSqlParserTest {
    public static void test(String sql) throws JSQLParserException {
        Statement statement = CCJSqlParserUtil.parse(sql);
        Select selectStatement = (Select) statement;
        TablesNamesFinder tablesNamesFinder = new TablesNamesFinder();
        List tableList = tablesNamesFinder.getTableList(selectStatement);
        for (Iterator iter = tableList.iterator(); iter.hasNext();) {
            String tableName = (String) iter.next();
            System.out.println(tableName);
        }
    }
    
    public static void main(String[] args) throws JSQLParserException {
        test("select a.c1,b.c2,c.* from tbl_a a left join tbl_b b on a.c3=b.c3 left join tbl_c c on a.c4=b.c4 where c.c5=‘tbl_d‘");
    }
}

输出结果如下:

tbl_a
tbl_b
tbl_c

可以看到,这个样例成功地获得了SQL:

select a.c1,b.c2,c.* from tbl_a a left join tbl_b b on a.c3=b.c3 left join tbl_c c on a.c4=b.c4 where c.c5=‘tbl_d

中使用了 tbl_atbl_btbl_c 这三张表。

参考链接:

使用JSQLParser解析SQL中涉及到的表

原文:https://www.cnblogs.com/zifeiy/p/10364426.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!