最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

MybatisPlus實(shí)戰(zhàn)技術(shù)分享合集 代碼生成器 多表連接查詢 分組查詢 一口氣干完

2023-01-10 18:14 作者:賽泰先生  | 我要投稿

一、MybatisPlusMax簡介

MybatisPlusMax是MybatisPlus的增強(qiáng)包,秉承只拓展不修改的理念,對MybatisPlus做增強(qiáng)。

正如MybatisPlus是對MyBatis的增強(qiáng),MybatisPlusMax是對MybatisPlus的增強(qiáng),拓展理念一脈相承。

MybatisPlus依然進(jìn)入軟件成熟期,對其進(jìn)行微小的修改會慎之又慎,向其提交修改PR周期較長,基于此考慮,為了更好的使用MybatisPlus,作者決定拓展第三方功能包。

當(dāng)MybatisPlusMax代碼逐步成熟后,作者愿意一次性捐獻(xiàn)給MybatisPlus官方團(tuán)隊,以方便用戶更好的使用MybatisPlus。

二、與MybatisPlus的淵源

(一)MyBatis粉

早期的作者也是MyBatis粉,如果你是從拼接SQL時代過來的,受夠了在Java代碼中拼接SQL字符串,那么MyBatis絕對讓你愛不釋手。

隨著MyBatis的重度使用,也暴露出一些問題:訪問數(shù)據(jù)庫極其啰嗦,單表CURD兜兜轉(zhuǎn)轉(zhuǎn)需要寫一大堆代碼,每個項(xiàng)目有很多張表,每個開發(fā)會做很多項(xiàng)目,此時的MyBatis從開發(fā)端來講需要完善。

(二)MybatisPlus初版

MybatisPlus敏銳的發(fā)現(xiàn)MyBatis的痛點(diǎn),著手對MyBatis重復(fù)業(yè)務(wù)代碼進(jìn)行封裝,于是便形成了早期版本MybatisPlus。

早期的MyBatisPlus字段名等魔法值充斥著Java代碼里,并且為了構(gòu)建查詢條件,需要編寫及其啰嗦的代碼,很多MyBatis使用者對此嗤之以鼻。被噴的原因如下:大量的字段名魔法值充斥在Java代碼里,與早期的拼接SQL字符串有何區(qū)別;非常簡單的查詢條件,在XML文件中很容易完成,使用MybatisPlus構(gòu)造查詢條件啰啰嗦嗦,不知所云。

早期的MybatisPlus為了改進(jìn)MyBatis的使用的想法是好的,可是在落地實(shí)踐過程中帶來了更大的問題,因此處于不溫不火的狀態(tài)。

(三)MybatisPlus新生

Java 8帶來了Lambda表達(dá)式,為MybatisPlus重構(gòu)代碼帶來了新的基礎(chǔ)能力。MybatisPlus基于Java 8新特性進(jìn)行代碼重構(gòu),為其帶來了新生,使用Lambda語法,干掉了Java代碼里的字段名等魔法值,此時的MybatisPlus真正展示出吸引力。

作者粉的是Lambda表達(dá)式版本的MybatisPlus,不管是查詢條件的構(gòu)建,還是字段的選取,均使用Lambda表達(dá)式(方法引用)來完成,Java代碼變得清爽。

方法引用性能

使用方法引用來替換字段名,是否會產(chǎn)生性能問題呢?會也不會。會是因?yàn)榻?jīng)過一層包裝,性能確實(shí)有損耗,不會是因?yàn)镸ybatisPlus在使用反射的地方使用了緩存,有效的解決了中間過程耗時操作,因此可以認(rèn)為Lambda版的MybatisPlus的性能略有下降。用略微下降一點(diǎn)性能的代價置換開發(fā)的靈活性,這一點(diǎn)是值得的。

況且現(xiàn)代服務(wù)器硬件逐年提高,從系統(tǒng)總體而言考慮,利大于弊。

基于方法引用實(shí)現(xiàn)編碼,在遇到代碼重構(gòu)是有多爽就不用多說了。小步快跑、敏捷開發(fā)等,造成的屎山代碼不勝枚舉,代碼重構(gòu)的地位變得愈發(fā)重要。

三、作者的努力

作者是MybatisPlus粉,因此在系統(tǒng)組件選擇態(tài)度更為積極。

(一)零SQL函數(shù)式編程時代

在Lambda表達(dá)式加持下的MybatisPlus,零SQL函數(shù)式編程成為了可能。零SQL是只盡量少顯示的編寫SQL語句,能不寫就不寫,對于疑難雜癥,退回使用MyBatis XML更為方便,此時也不能一條道走到黑。

(二)MybatisPlusMax

MybatisPlusMax不是新內(nèi)容新,是從common包中抽離出來的代碼,方便用戶更好的使用和解藕。

1、DAO緩存

給DAO層透明化的增加緩存,能夠極大的提高接口的響應(yīng)效率,透明化意味著不知不覺間具備了緩存的能力,業(yè)務(wù)代碼零感知。這里使用的是Redis分布式緩存,Redis是繼Mysql之后必備的組件,因此默認(rèn)緩存使用Redis分布式緩存。

有關(guān)DAO更多內(nèi)容,請查看視頻教程增強(qiáng)MybatisPlus!一行代碼整合Redis分布式緩存!

2、自增自減零SQL編程

通過自定義CustomLambdaUpdateWrapper包裝器,實(shí)現(xiàn)零SQL編程。

public boolean updateUserAge(Long userId) {
? ?CustomLambdaUpdateWrapper<User> wrapper = new CustomLambdaUpdateWrapper<>();
? ?wrapper.incr(User::getAge, 1).eq(User::getUserId, userId);
? ?return update(wrapper);
}

視頻教程自增自減

3、復(fù)雜業(yè)務(wù)報表

通過封裝WrapperUtils工具類,實(shí)現(xiàn)andor 交替出現(xiàn)時復(fù)雜業(yè)務(wù)報表查詢。具體使用場景舉例:

((industry = ?) OR (industry = ?)) AND ((round = ?) OR (round = ?) OR (round = ?))

MybatisPlus·業(yè)務(wù)報表·復(fù)雜SQL

(三)多表連接查詢

在我們使用Lambda風(fēng)格搞定單表查詢之后,因業(yè)務(wù)需要,多表連接查詢必不可少!為此作者在此方面也做了不少努力,既然選擇零SQL編程,那么便堅持到底。

在這里需要說明幾點(diǎn),有不少聲音認(rèn)為,單表使用MybatisPlus,多表使用MyBatis,有這種想法的朋友可以更近一步,不然便是自欺欺人,掛著MybatisPlus之名干MyBatis之實(shí)。

實(shí)際上,MyBatis使用join來完成連表查詢,本身是有性能缺陷的,數(shù)據(jù)庫數(shù)據(jù)量膨脹越來越快,join連表查詢的弊端愈發(fā)明顯?!栋⒗锇桶烷_發(fā)者手冊》明令禁止使用join查詢,你還在堅持什么呢?

以Lambda版MybatisPlus單表查詢?yōu)榛A(chǔ),通過Java內(nèi)存拼裝,完成多表連接查詢是全新的選擇。視頻教程如下:

(四)零SQL分組查詢

分組查詢由于涉及到新增字段,因此普通的單表查詢并不合適,不滿足DO與數(shù)據(jù)庫表結(jié)構(gòu)一一對應(yīng)的關(guān)系。作者通過對MybatisPlus源代碼的閱讀,找到了依然能夠像單表查詢的形式處理分組查詢。

視頻教程

(五)MybatisPlus代碼生成器

只要你想偷懶,那么Java代碼生成器便是偷懶的利器,Java代碼生成器以MybatisPlus為基礎(chǔ),通過在全局yml文件中復(fù)用數(shù)據(jù)庫,讀取數(shù)據(jù)庫元數(shù)據(jù)信息,一件生成domain、mapper、service、controller等Spring MVC風(fēng)格代碼,以單表查詢?yōu)橹?,兼顧多表連接查詢,是你的開發(fā)好幫手。

文字教程MybatisPlus代碼生成器

視頻教程

四、后記

作者叫賽泰先生,主要技術(shù)分享平臺在B站,是一位MybatisPlus粉,基于MybatisPlus做實(shí)戰(zhàn)技術(shù)分享,希望能對喜歡MybatisPlus的你有所幫助。

另外有MybatisPlus技術(shù)學(xué)習(xí)群,添加V信dream4s進(jìn)群,請注明來意。


MybatisPlus實(shí)戰(zhàn)技術(shù)分享合集 代碼生成器 多表連接查詢 分組查詢 一口氣干完的評論 (共 條)

分享到微博請遵守國家法律
永德县| 都江堰市| 新津县| 上饶市| 万载县| 钦州市| 上思县| 泊头市| 蒲城县| 盐津县| 高青县| 阿拉善左旗| 额济纳旗| 延边| 图木舒克市| 定襄县| 和龙市| 上蔡县| 武安市| 昆山市| 雅江县| 溧阳市| 灵台县| 泰和县| 太谷县| 云林县| 吴桥县| 济源市| 营口市| 昭平县| 天津市| 余庆县| 祁东县| 青川县| 朔州市| 建水县| 林州市| 双流县| 孝义市| 闸北区| 潮安县|