幸福小思路
現在做的項目剛好使用的是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還有更多用法,玩法,關注我,我們一塊學習!