MyBatis高級應用之逆向工程自動生成SQL語句

本文以Spring整合MyBatis環境下,介紹MyBatis逆向工程自動生成pojo,mapper,dao的Java類。MyBatis的一個主要的特點就是需要程序員自己編寫sql,那麼如果表太多的話,難免會很麻煩,所以mybatis官方提供了一個逆向工程,可以針對單表自動生成mybatis執行所需要的代碼,一般在開發中,常用的逆向工程方式是通過數據庫的表生成代碼。下圖爲逆向工程依賴的jar包。

mybatis-generator-core-1.3.6.jar爲逆向工程的核心包

mysql-connector-java-8.0.9-rc.jar爲連接數據庫所需驅動

mybatis-3.4.6.jar爲mybatis框架依賴的jar包,到這裏就足夠了,這裏可以添加日誌文件,因爲不是必須的所以就省略了,我們只需要上面三個包就可以使用mybatis的逆向工程了。下面看一下它依賴的配置文件。

這是配置文件的存放位置,一定要放在項目的根目錄下,不要方法src下,因爲一會用到File來加載這個配置文件。

<context 標籤,id隨便取,目前用不到。 targetRuntime運行環境,目前2018年4月30號Mybatis最新的版本爲3.4.6,所以這裏寫3就好,再過幾年有可能會變成4。<commentGenerator>下有個

<property name="suppressAllComments" value="true" />

標籤,該標籤value爲true的時候不顯示生成pojo裏面的註釋,這裏生成的是英文註釋,所以默認選擇爲true即可。<jdbcConnection>標籤需要創建connection對象基本的url,user,password,driverClass四個屬性,按照圖中格式配置即可。被註釋掉的部分是鏈接oracle數據庫的格式

<javaTypeResolver>標籤用於將數據庫中的DECIMAL和NUMERIC在pojo類中解析爲java.math.BigDecimal類型,所以我們這裏寫false,全部解析爲Integer類型。

這裏的三個標籤用於指定生成的mapper,pojo,與mapper接口的包名。和指定項目名,有時候開發中一般都會新建一個java工程來生成,然後將生成的文件拷貝到自己的工程中,這也不麻煩,而且很安全。

最後的table標籤用於對哪些表使用逆向工程。註釋掉的部分用於指定數據庫字段的Java類型。下面我們看一下執行代碼。

如圖所示,紅色框框標識出的爲逆向工程配置文件的位置,由於這裏使用File構造方法傳入路徑,所以該配置文件必須放下項目錄下,不要放在src/下面,否則讀不到,會拋出文件沒找到的異常,下面我們執行一下試試。

這是控制檯log4j日誌打印出的,可以看到它找到數據庫中的,字段,類型,長度等信息,到這裏說明生成成功了。

我們刷新一下項目發現src/下多少mapper和pojo包,都是剛纔逆向工程自己生成的。接下來我們將mapper和pojo拷貝到Spring整合MyBatis環境中測試能否執行SQL語句操作。

這裏補充下上一篇Spring整合MyBatis文章中忘記提到的,我們通過配置mybatis的mapper掃描包,能夠讓Spring將MapperScannerConfigurer裝入容器中,MapperScannerConfigurer能夠掃描包下所有子孫包中的mapper接口,爲我們創建mapper的實現類。圖中紅色框框部分可以代替已經註釋掉的配置。因爲沒有指定接口的 bean名稱,所以我們只能通過傳入mapper接口的class對象獲取實現類,代碼如下。

圖中重要代碼已經用紅色框框標識出,UserExample是逆向工程生成pojoUser時創建的,該類封裝了一些條件。Example.createCriteria()這個方法時創建了一個條件查詢對象,這裏和hibernate的Criteria對象十分相似,通過andSexEqualTo("1");方法,這個方法相當於where sex = “ 1 ”這種限定條件,然後現在調用usermapper中的方法,這裏調用的是cunnt方法,傳入example對象,由於上一行中example對象已經被我們封裝了where sex = “ 1 ”的限定條件,usermapper.countByExample(example);這句代碼執行後拼接成的sql語句就是 select count(1) form user where sex = '1';這也就是mybatis被稱爲半ORM框架的原因,也有了些許面向對象的意爲,但功能上還不足以與強大的hibernate相媲美。我們在創建限定條件對象createCriteria()時,後面的條件是可以無限增加的,該對象支持各種複雜查詢,功能也還是十分強大的。

以上就是mybatis的逆向工程介紹了,不光能夠自己生成sql,pojo,mapper外,也封裝了對數據庫面向對象的操作。

來源:https://www.tuicool.com/articles/vaIn2y7

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章