java后端开发(九):mybatis的威力加强版之mybatis-plus
前言
后端一半的時(shí)間都是在和關(guān)系型數(shù)據(jù)庫(kù)打交道,那么雖然我們用 mybatis 這個(gè) ORM 框架,簡(jiǎn)化代碼的開(kāi)發(fā)。但是代碼中涉及到太多的重復(fù)操作,比如對(duì)用戶的增刪改查和對(duì)設(shè)備的增刪改查。我們畢竟是貪婪而又懶惰的,能夠自動(dòng)化的絕不手動(dòng)處理,所以不禁想問(wèn):有沒(méi)有威力加強(qiáng)版?
回答是:有,而且很香。
這里要提兩點(diǎn):
那么,這個(gè)威力加強(qiáng)版是什么呢?
是 mybatis-plus 。這個(gè)名字很形象,威力加強(qiáng)版無(wú)疑了。官網(wǎng)文檔的愿景如下:
我們的愿景是成為 MyBatis 最好的搭檔,就像 魂斗羅 中的 1P、2P,基友搭配,效率翻倍
? – 參見(jiàn) mybatis-plus官網(wǎng)
由于官方網(wǎng)文檔寫的非常好,也有詳細(xì)的視頻教程,大家可以選擇參看下面的文檔和視頻鏈接,本文重點(diǎn)就不在于如何使用的細(xì)節(jié)了。
- mybatis-plus官方文檔
- MyBatis-Plus 入門 - 視頻教程 - 慕課網(wǎng)
- MyBatis-Plus 進(jìn)階 - 視頻教程 - 慕課網(wǎng)
官方文檔基本上看一下就可以大致知道如何使用了,視頻可選擇參看。
整合及解答
整合
還是來(lái)一個(gè)整合教程吧,不然從新上手還是要費(fèi)一點(diǎn)點(diǎn)時(shí)間的。總共分為6步:
替換成:
mybatis-plus:mapper-locations: classpath*:/mapper/*.xml其他都不變。
其中,BaseMapper是包括基礎(chǔ)功能的接口,mybatis-plus 自帶。
完了
真的完了
就是這么簡(jiǎn)單,使用例程如下:
@Autowiredprivate MyPlusMapper testMapper;@Testpublic void mybatisTest() {log.info(testMapper.selectOne(new QueryWrapper<UserPlus>().eq("username", "admin")).toString());}輸出結(jié)果為:
UserPlus{id=‘1140466515787780089’, name=‘a(chǎn)dmin’, password=‘1231231231’}
如果再配合上 generator 自動(dòng)生成代碼框架。也就是根據(jù)你設(shè)計(jì)好的數(shù)據(jù)表來(lái)自動(dòng)生成:
- service層的代碼
- dao層的代碼
- 數(shù)據(jù)表映射對(duì)象
- mapper.xml文件
這意味著什么呢?意味著足夠簡(jiǎn)單,意味著急速開(kāi)發(fā),意味著解決了一個(gè)問(wèn)題:即各類單表的CURD操作,提升了我們的生產(chǎn)效率。
解惑
至于 mybatis-plus 其他的高階用法請(qǐng)自行學(xué)習(xí),遇事不決選mybatis-plus,自然而然就會(huì)了。
最佳實(shí)踐
核心思想
1. 對(duì)單表的操作首先考慮使用 mybatis-plus,實(shí)在不行的情況才自行實(shí)現(xiàn)(基本沒(méi)有這種情況)
2. 優(yōu)先考慮使用 Service 層的plus方法,其次才是使用 dao 層的plus方法。
3. 遇到單表操作不知道怎么寫的情況,請(qǐng)查看官方文檔
最佳實(shí)踐
- mapper.update(po, new UpdateWrapper<Po>().eq("id", id)); 這樣只會(huì)更新 po 中非空的屬性。適合多字段更新
- mapper.update(null, new UpdateWrapper<Po>().set("name", name).eq("id", id)); 這樣只會(huì)更新 Po 表中的 name 字段。適合少量字段的更新,set也可以帶過(guò)濾條件
- mapper.updateById(po); 這樣會(huì)自動(dòng)根據(jù) PO 中的 id 字段去更新數(shù)據(jù),并且忽略空值
mybatis-plus自帶的方法調(diào)用入口有:
- service層繼承得到的方法
- dao層繼承得到的方法
- po對(duì)象繼承得到的方法
以上幾種都可以用來(lái)操作數(shù)據(jù)表
過(guò)濾條件的使用
- 只有更新的時(shí)候使用 UpdateWrapper 來(lái)設(shè)置更新條件
- 其他操作都使用 QueryWrapper 來(lái)設(shè)置過(guò)濾條件
小結(jié)
實(shí)際上,mybatis-plus 本身代碼的設(shè)計(jì)也非常好,后續(xù)應(yīng)該仔細(xì)看看。掌握的關(guān)鍵在于多實(shí)踐多看文檔,但是千萬(wàn)不要忘記不論如何,mybatis-plus 只是一個(gè)工具。掌握工具和理解原理你覺(jué)得哪個(gè)更重要呢?
彩蛋
既然提到了工具,這里再推薦一個(gè)maven依賴庫(kù),非常好的第三方工具集,大名鼎鼎的 Hutool ,Hutool官方文檔
hutool 雖然只是工具類庫(kù),但卻是非常優(yōu)秀的開(kāi)源項(xiàng)目。千萬(wàn)不要以為其只是一個(gè)工具類庫(kù)而忽視它。
以下引自 hutool 的介紹,有必要看看其設(shè)計(jì)思想:
Hutool是一個(gè)小而全的Java工具類庫(kù),通過(guò)靜態(tài)方法封裝,降低相關(guān)API的學(xué)習(xí)成本,提高工作效率,使Java擁有函數(shù)式語(yǔ)言般的優(yōu)雅,讓Java語(yǔ)言也可以“甜甜的”。
Hutool如何改變我們的Coding方式:
Hutool的目標(biāo)是使用一個(gè)工具方法代替一段復(fù)雜代碼,從而最大限度的避免“復(fù)制粘貼”代碼的問(wèn)題,徹底改變我們寫代碼的方式。
以計(jì)算MD5為例:
- 【以前】打開(kāi)搜索引擎 -> 搜“Java MD5加密” -> 打開(kāi)某篇博客-> 復(fù)制粘貼 -> 改改好用
- 【現(xiàn)在】引入Hutool -> SecureUtil.md5()
Hutool的存在就是為了減少代碼搜索成本,避免網(wǎng)絡(luò)上參差不齊的代碼出現(xiàn)導(dǎo)致的bug。
Hutool使用規(guī)約唯一一條
遇到工具方法需要設(shè)計(jì),首先去官方文檔左側(cè)列表查找有無(wú)現(xiàn)成的實(shí)現(xiàn),不確定的話使用瀏覽器搜索 功能名 + hutool 關(guān)鍵字。
確實(shí)不行,才自行進(jìn)行設(shè)計(jì)解決。
更多參見(jiàn):java后端開(kāi)發(fā)教程系列目錄
總結(jié)
以上是生活随笔為你收集整理的java后端开发(九):mybatis的威力加强版之mybatis-plus的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 超声波通信方案
- 下一篇: JAVA SE 第一章 计算机、程序和