首先添加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_a
, tbl_b
, tbl_c
這三張表。
參考鏈接: