建設(shè)網(wǎng)站需要的軟硬件重慶公司seo
MyBatis和MyBatis_Plus的區(qū)別
MyBatis_Plus
MyBatis_Plus
是一個(gè)MyBatis
的增強(qiáng)工具,只是在MyBatis
的基礎(chǔ)上增強(qiáng)了卻沒有做改變,MyBatis-Plus
支持所有MyBatis
原生的特性,所有引入MyBatis-Plus
不會(huì)對(duì)現(xiàn)有的MyBatis
框架產(chǎn)生任何影響。
MyBatis 和 MyBatis-Plus 的區(qū)別
MyBatis
- 所有SQL語句全部要自己寫
- 手動(dòng)解析實(shí)體關(guān)系映射轉(zhuǎn)換為MyBatis內(nèi)部對(duì)象注入容器
- 不支持Lambda形式調(diào)用
MyBatis-Plus
- 支持Lambda形式調(diào)用
- 強(qiáng)大的條件構(gòu)造器,滿足各類使用需求
- 內(nèi)置Mapper,通用的Service,少量的配置即可實(shí)現(xiàn)單表大部分CRUD操作
- 提供了基本的CRUD功能連SQL語句都不用自己編寫
- 自動(dòng)解析實(shí)體關(guān)系映射轉(zhuǎn)換為MyBatis內(nèi)部對(duì)象注入容器
MyBatis優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
- MyBatis封裝了JBDC底層訪問數(shù)據(jù)庫的細(xì)節(jié),使我們程序猿不需要與JDBC API打交道,就可以訪問數(shù)據(jù)庫
- MyBatis簡單易學(xué),程序猿直接編寫SQL語句,適合于對(duì)SQL語句性能要求比較高的項(xiàng)目
- SQL語句封裝在配置文件中,便于統(tǒng)一管理與維護(hù),降低了程序的耦合度
- SQL代碼從程序代碼中徹底分離出來,可重用
- 提供了動(dòng)態(tài)SQL標(biāo)簽,支持編寫動(dòng)態(tài)SQL
- 提供映射標(biāo)簽,支持對(duì)象與數(shù)據(jù)庫的ORM字段關(guān)系映射
缺點(diǎn):
- 過于依賴數(shù)據(jù)庫SQL語句,導(dǎo)致數(shù)據(jù)庫移植性差,更換數(shù)據(jù)庫,如果SQL語句有差異,SQL語句工作量大
- 由于xml里標(biāo)簽id必須唯一,導(dǎo)致DAO中方法不支持方法重載
MyBatis-Plus優(yōu)點(diǎn)
優(yōu)點(diǎn)
-
依賴少:僅僅依賴 Mybatis 以及 Mybatis-Spring 。
-
損耗小:啟動(dòng)即會(huì)自動(dòng)注入基本 CURD,性能基本無損耗,直接面向?qū)ο蟛僮?。
-
預(yù)防Sql注入:內(nèi)置 Sql 注入剝離器,有效預(yù)防Sql注入攻擊 。
-
通用CRUD操作:內(nèi)置通用 Mapper、通用 Service,僅僅通過少量配置即可實(shí)現(xiàn)單表大部分 CRUD 操作,更有強(qiáng)大的條件構(gòu)造器,滿足各類使用需求 。
-
多種主鍵策略:支持多達(dá)4種主鍵策略(內(nèi)含分布式唯一ID生成器),可自由配置,完美解決主鍵問題 。
-
支持熱加載:Mapper 對(duì)應(yīng)的 XML 支持熱加載,對(duì)于簡單的 CRUD 操作,甚至可以無 XML 啟動(dòng)
-
支持ActiveRecord:支持 ActiveRecord 形式調(diào)用,實(shí)體類只需繼承 Model 類即可實(shí)現(xiàn)基本 CRUD 操作
-
支持代碼生成:采用代碼或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 層代碼(生成自定義文件,避免開發(fā)重復(fù)代碼),支持模板引擎、有超多自定義配置等。
-
支持自定義全局通用操作:支持全局通用方法注入( Write once, use anywhere )。
-
支持關(guān)鍵詞自動(dòng)轉(zhuǎn)義:支持?jǐn)?shù)據(jù)庫關(guān)鍵詞(order、key…)自動(dòng)轉(zhuǎn)義,還可自定義關(guān)鍵詞 。
-
內(nèi)置分頁插件:基于 Mybatis 物理分頁,開發(fā)者無需關(guān)心具體操作,配置好插件之后,寫分頁等同于普通List查詢。
-
內(nèi)置性能分析插件:可輸出 Sql 語句以及其執(zhí)行時(shí)間,建議開發(fā)測(cè)試時(shí)啟用該功能,能有效解決慢查詢 。
-
內(nèi)置全局?jǐn)r截插件:提供全表 delete 、 update 操作智能分析阻斷,預(yù)防誤操作。
-
默認(rèn)將實(shí)體類的類名查找數(shù)據(jù)庫中的表,使用@TableName(value=“table1”)注解指定表名,@TableId指定表主鍵,若字段與表中字段名保持一致可不加注解