天天看點

JSqlParser系列之一源代碼運作(原)

一、JSQLParser介紹

  JSQLParser是一款開源的SQL語句解析器,使用它可以把SQL語句解析成一組層次分明的java類。JSQLParsers所能解釋的SQL語句不受具體資料庫的限制,在支援标準SQL的同時,也支援一些特定資料庫的方法。如支援Oracle關聯文法(+),PostgreSQL的方法using::,以及關系運算符!=,等等。JSQL解析的結果可以使用Visitor模式進行比較友善的通路,後續将有介紹。

  JSQLParser的項目位址為:https://github.com/JSQLParser/JSqlParser/wiki#what-is-jsqlparser 我下載下傳到的版本為0.9.2,後續的一些介紹也以該版本為基礎。

二、源代碼工程搭建

  不是特别熟悉MAVEN,拿到源代碼後,檢視了一下pom.xml檔案。

JSqlParser系列之一源代碼運作(原)

可以看出,JSQLParser依賴Junit 4.11,commons-io 2.4,Junit Eclipse已自帶,commons-io 2.4 可以直接到apache去下載下傳,位址為:

Commons IO – Download Apache Commons IO

這樣建立好工程,增加上面兩個jar包,工程還是報錯。如下:

JSqlParser系列之一源代碼運作(原)

怎麼會缺少類呢?原來JSQLParser源碼中SQL解析那部分是使用JAVACC來生成的,在JSQLParser的源碼中,你可以看到JSqlParserCC.jj這樣一個檔案:

JSqlParser系列之一源代碼運作(原)

該檔案為JAVACC源檔案(後續計劃學習一下JAVACC,屆時筆記奉上),下載下傳一個JAVACC5.0(https://java.net/projects/javacc/downloads/download/javacc-5.0.zip),解壓,指令行轉到bin目錄,拷貝一份JSqlParserCC.jj到bin目錄,輸入: javacc JSqlParserCC.jj

JSqlParser系列之一源代碼運作(原)

可以看到,左側目錄中已生成幾個java源代碼檔案,拷貝這些檔案到相應的包,錯誤即可消除。至此,JSQLParser源代碼工程搭建完畢。