03.04 mybatis如何從接口映射到xml?

幸福小思路


現在做的項目剛好使用的是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)來使用這個插件。

使用了這個插件之後,能夠自動生成xxxEntity.java, xxxEntityExample.java,

xxxEntityMapper.java

xxxEntityMapper.xml

四個基本文件。

其中

xxxEntity.java

存儲了數據庫對應的數據結構,即每一個字段對應一個參數;

xxxEntityExample.java

存儲了查詢語句的基本條件(比如 ... where id=3 and name='xm'這種查詢條件);

xxxEntityMapper.java

存儲了查詢方法(多個條件組成一個查詢方法,比如把上面的查詢條件補充完整,變成 select * from yTable where id=3 and name='xm',這個就是一個查詢方法,叫selectByExample)

xxxEntityMapper.xml

存儲了實際的sql語句,下圖是我從我們實際工程中截的圖,對應了

Mapper.java

文件中的update()和delete()兩個方法。

在介紹完上面四個文件之後,如果你有新的需求,需要自己寫sql語句的時候,你就應該知道該怎麼辦了。

首先是在

Mapper.java

文件中聲明一個方法,然後在

Mapper.xml

文件中,把你的方法寫作動態的sql語句,我再貼一張我寫的截圖。這個截圖就是首先在

Mapper.java

文件中增加getStabilityOrderByPhoneId方法,然後再到xml文件裡增加sql語句就可以用啦。

以上就是mybatis從接口映射到xml的方法,歡迎各位在下方評論區留言點贊。

我是蘇蘇思量,來自BAT的JAVA開發工程師,每日分享科技類見聞,歡迎關注我,與我共同進步。


一個存在感小透明


mybatis作為JAVA開發最流行的ORM(object renational mapping)框架,能夠將JAVA實體類和數據庫中的字段結合映射起來,達到直接操作數據庫的目的!

需要明確的是,所有的ORM框架都基於JAVA原生的JDBC API做了封裝,所以首先我們來了解下jdbc是怎麼操作數據庫的?

1,註冊驅動!

2,建立connection!

3 ,創建操作語句statement!

4,執行statement!

5,封裝結果resultset!

既然是封裝jdbc,也就是在jdbc的基礎上進行擴展,達到使用方便的效果!


在mybatis容器初始化的時候,會自動進行驅動註冊,並把xml中配置的sql語句按照命名空間(就是接口名)加sql ID的方式作為key,sql語句作為value放入hashMap中存儲起來,等到使用的時候從hashmap中取出,經過反射處理得到原生的sql語句,在使用jdbc executor進行執行!

執行過程中,如果有parameterType映射錯誤,或者SQL語句錯誤,則會拋出異常到應用層!

得到數據操作結果以後,使用resultmap中的映射關係把數據映射到JAVA實體類中,並創建相應的實例對象!




自己總結的mybatis的常用功能:

1,使用xml文件配置使用映射

2,使用typeAliases修改類型別名

3,使用插件進行方法攔截

4,使用類型句柄(typehandlers)匹配java的參數或者返回值類型

5,使用環境(environments)配置多個不同的環境,以便使用不同的數據庫

6,使用事務管理器(Transaction)管理事務

7,使用動態SQL

8,處理一對一關係使用聯合(association),處理一對多使用聚集(cellection)

9,使用識別器(discriminator)對產生的結果集進行篩選(類似switch語句)

10,使用cache開啟緩存

11,使用緩存引用res-cache(讓不同命名空間都能使用同一個緩存機制)


mybatis還有更多用法,玩法,關注我,我們一塊學習!


分享到:


相關文章: