這本《Mybatis獨門筆記》,看完人均漲薪2K,我覺得你很需要!

前言

只有禿頭才能變強。想領這本Mybatis獨門筆記的朋友關注然後私信我(Mybatis)即可免費獲得

Mybatis應該是國內用得最多的「數據訪問層」框架了,我看了我司的好幾個系統,基本都是用Mybatis的。

實話實說,我對Mybatis沒有很深入的瞭解,也僅僅是處於「會用」的階段上。日常的要加張表,加個字段就是寫寫DAO/Mapper。

這本《Mybatis獨門筆記》,看完人均漲薪2K,我覺得你很需要!

為什麼沒有深入去研究Mybatis的原因很可能是面試其實問得不是特別多,起碼我在校招的時候面了很多家公司,也沒怎麼問我Mybatis的。

Mybatis如果僅僅是要「會用」,入門是非常快的,感覺兩三天就可以搞好了。


這本《Mybatis獨門筆記》,看完人均漲薪2K,我覺得你很需要!

認識Mybatis

在前陣子已經總結過了JDBC了,無論是什麼的ORM框架(Object Relation Mapping)其實都是在JDBC上封裝了一層,底層用的都是JDBC的代碼。

眾所周知,直接寫JDBC的代碼的效率是最高的。那為什麼要用ORM框架呢??

回想起我第一次實習看到公司代碼時的感受:「臥槽,代碼怎麼這麼多啊。這為什麼有這麼多的包啊,一直點開都有」

這本《Mybatis獨門筆記》,看完人均漲薪2K,我覺得你很需要!

如果純用JDBC,只要項目是有點規模的,那我們的項目裡代碼量一定會很多。最重要的是,很多的代碼都是重複的。如果我們的項目裡邊積累了這麼多的重複代碼,最致命的問題就是「不好維護

於是就有了這麼多的ORM框架,至於用哪一個ORM框架,我覺得沒有對錯之分,公司用哪個你就用哪個就好了。

畢竟技術都是服務於業務,公司在選型的時候,選了某ORM框架,肯定也有當時的一個考慮。等到真的是由於使用了某ORM框架導致無法承接掉業務的時,那自然而然就會有優化。

在知乎上有很多「Mybatis與Hibernate/SpringData JPA」的對比,有興趣的小夥伴可以去學習學習,看著大佬們的「回答/討論」還是能學到不少的東西的。

這本《Mybatis獨門筆記》,看完人均漲薪2K,我覺得你很需要!

Mybatis作為一個ORM框架,在市面上非常受歡迎,只要有JDBC基礎,學會用很簡單。

不BB了,開始吧

這本《Mybatis獨門筆記》,看完人均漲薪2K,我覺得你很需要!

入門

使用Mybatis的步驟大致如下:

這本《Mybatis獨門筆記》,看完人均漲薪2K,我覺得你很需要!

首先我們需要配Mybatis的一份配置文件,這份配置文件主要配置數據庫相關的信息:

這本《Mybatis獨門筆記》,看完人均漲薪2K,我覺得你很需要!

隨後,我們編寫一個工具類來獲取sqlSession,這個SQLSession相當於JDBC的Connection對象

這本《Mybatis獨門筆記》,看完人均漲薪2K,我覺得你很需要!

然後編寫我們的映射文件,這個映射文件實際上就是對象與數據庫的映射關係:

這本《Mybatis獨門筆記》,看完人均漲薪2K,我覺得你很需要!

我們在映射文件上使用標籤來實現插入:

這本《Mybatis獨門筆記》,看完人均漲薪2K,我覺得你很需要!

然後調用sqlSession來實現插入即可:

這本《Mybatis獨門筆記》,看完人均漲薪2K,我覺得你很需要!

效果如下:

這本《Mybatis獨門筆記》,看完人均漲薪2K,我覺得你很需要!

看到這裡,會不會覺得好像有點複雜?其實這幾個步驟都很自然而然的:

  • 要操作數據庫,總會有數據庫相關的配置吧。(這塊實際上就寫一次,第一次寫完了就不用再寫了)
  • 要操作數據庫,得告訴程序怎麼操作吧,所以有映射文件(可以是XML的映射文件,也可以是註解的方式,反正我們得開個口子去告訴程序怎麼執行)
  • 然後我們操作SQLSession去執行命令(這塊後面我們可以把SQLSession直接屏蔽掉)

所以,用Mybatis實際上就是寫映射文件/註解去告訴程序怎麼操作,而映射文件/註解其實就是寫SQL,對我們來說並不是難事。

因此,Mybatis入門是真的簡單。

這本《Mybatis獨門筆記》,看完人均漲薪2K,我覺得你很需要!

Mybatis細節

動態SQL

動態SQL實際上就是使用Mybatis給我們提供的if/foreach之類的標籤去判斷傳遞進來的參數有沒有值,如果有值我們就拼接參數,如果沒有,我們就不拼接。

這本《Mybatis獨門筆記》,看完人均漲薪2K,我覺得你很需要!

緩存

瞭解Mybatis的一級緩存和二級緩存是什麼意思,Mybatis的緩存實現可以用ehcache來管理。

如果某些數據查詢量大而且不怎麼修改的,我們可以考慮使用ehcache來對這部分的數據進行緩存,減少數據庫的壓力。

這本《Mybatis獨門筆記》,看完人均漲薪2K,我覺得你很需要!

Mapper代理

在最開頭的例子我們看到我們使用Mybatis在開發中也不見得簡單很多,因為有SQLSession這一塊還是需要我們手動去編寫。

我們可以使用Mapper代理的方式屏蔽掉SQLSession這塊的代碼,開發只要寫一個接口+一個Mapper.xml(或者註解)就足夠了。

那是怎麼屏蔽的呢?依靠的是動態代理。為什麼可以依靠動態代理來實現呢?因為我們Mapper代理是需要依賴「規則」的,有了「規則」我們就可以通過「反射」去簡化我們的代碼了。

這本《Mybatis獨門筆記》,看完人均漲薪2K,我覺得你很需要!

逆向工程

通過Mapper代理我們已經可以實現「一個接口+一個Mapper映射文件(註解)」就可以開發我們的程序了。

而又因為在工作中,CRUD是避免不了的,幾乎每增加一張表,都需要有「最基本」的CRUD。

於是程序員們又偷懶了,連「最基本」的CRUD都不想自己寫了,於是就有了逆向工程。

我們看一下逆向工程的配置就差不多能看懂是幹啥的了:

這本《Mybatis獨門筆記》,看完人均漲薪2K,我覺得你很需要!

通過表的結構,生成我們自己的JavaBean以及對應的Mapper接口和Mapper映射文件。

這本《Mybatis獨門筆記》,看完人均漲薪2K,我覺得你很需要!

這本《Mybatis獨門筆記》,看完人均漲薪2K,我覺得你很需要!


Mybatis-plus

Mybatis-plus又是程序員偷懶造出的輪子(狗頭這款插件說實話我沒用過,看了一下官網,大致就是:簡單的CRUD,我連XML都不需要了,API直接幫我們內置了對應的CRUD方法。

有興趣的同學去學學,都是能提高開發效率的工具。

mp.baomidou.com/

這本《Mybatis獨門筆記》,看完人均漲薪2K,我覺得你很需要!

作者:java3y
鏈接:
https://juejin.im/post/5ea240dd6fb9a03c6a4184d7
來源:掘金


分享到:


相關文章: