-
1 # 金色海上海
-
2 # 一個存在感小透明
現在做的專案剛好使用的是SSM框架,受益於mybatis以及mybatis generator的自動化,但是也必須承認mybatis generator自動生成的一些語句在部分場景受限,有時需要開發者去手動寫sql語句,封裝成函式,給上層呼叫。
首先介紹下mybatis generator。
與hibernate相比,很多人覺得mybatis使用的時候需要開發者自己編寫xml檔案很繁瑣,但是藉助mybatis generator這個外掛,這份xml生成工作完全可以託管。只需要在eclipse或者intellij的market裡安裝mybatis generator外掛,就可以使用。
如果不想安裝外掛,也可通過mvn命令(mvn mybatis-generator:generate)來使用這個外掛。
四個基本檔案。其中
儲存了實際的sql語句,下圖是我從我們實際工程中截的圖,對應了Mapper.java
檔案中的update()和delete()兩個方法。在介紹完上面四個檔案之後,如果你有新的需求,需要自己寫sql語句的時候,你就應該知道該怎麼辦了。
首先是在
檔案中宣告一個方法,然後在Mapper.xml
檔案中,把你的方法寫作動態的sql語句,我再貼一張我寫的截圖。這個截圖就是首先在Mapper.java
檔案中增加getStabilityOrderByPhoneId方法,然後再到xml檔案裡增加sql語句就可以用啦。 -
3 # 此生唯一
mybatis作為JAVA開發最流行的ORM(object renational mapping)框架,能夠將JAVA實體類和資料庫中的欄位結合對映起來,達到直接操作資料庫的目的!
需要明確的是,所有的ORM框架都基於JAVA原生的JDBC API做了封裝,所以首先我們來了解下jdbc是怎麼操作資料庫的?
1,註冊驅動!
2,建立connection!
3 ,建立操作語句statement!
4,執行statement!
5,封裝結果resultset!
在mybatis容器初始化的時候,會自動進行驅動註冊,並把xml中配置的sql語句按照名稱空間(就是介面名)加sql ID的方式作為key,sql語句作為value放入hashMap中儲存起來,等到使用的時候從hashmap中取出,經過反射處理得到原生的sql語句,在使用jdbc executor進行執行!
執行過程中,如果有parameterType對映錯誤,或者SQL語句錯誤,則會丟擲異常到應用層!
自己總結的mybatis的常用功能:
1,使用xml檔案配置使用對映
2,使用typeAliases修改類型別名
3,使用外掛進行方法攔截
4,使用型別控制代碼(typehandlers)匹配java的引數或者返回值型別
5,使用環境(environments)配置多個不同的環境,以便使用不同的資料庫
6,使用事務管理器(Transaction)管理事務
7,使用動態SQL
8,處理一對一關係使用聯合(association),處理一對多使用聚集(cellection)
9,使用識別器(discriminator)對產生的結果集進行篩選(類似switch語句)
10,使用cache開啟快取
回覆列表
我覺得沒有必要再學習mybatis,太過時了,看不上那種sql寫法,現在應該學習sqltoy-orm!沒有對比就沒有傷害!
只提供一個sql風格圖不便於瞭解更多,再增加幾張圖!
https://github.com/chenrenfei/sagacity-sqltoy