MyBatis-Plus 框架
MyBatis-Plus(簡稱 MP)是一個MyBatis的增強工具,在MyBatis的基礎(chǔ)上只做增強不做改變,為簡化開發(fā)、提高效率而生。
簡化開發(fā)、提高效率,這是MyBatis-Plus核心思想。一種集MyBatis與Hibernate的優(yōu)點一起的框架。它提供了Hibernate的單表CRUD操作的方便同時,又保留了MyBatis的特性。
特性(官網(wǎng)提供)
- 無侵入:只做增強不做改變,引入它不會對現(xiàn)有工程產(chǎn)生影響,如絲般順滑
- 損耗小:啟動即會自動注入基本 CURD,性能基本無損耗,直接面向?qū)ο蟛僮?,BaseMapper
- 強大的 CRUD 操作:內(nèi)置通用 Mapper、通用 Service,僅僅通過少量配置即可實現(xiàn)單表大部分 CRUD 操作,更有強大的條件構(gòu)造器,滿足各類使用需求,簡單的CRUD操作不用自己編寫
- 支持 Lambda 形式調(diào)用:通過 Lambda 表達式,方便的編寫各類查詢條件,無需再擔(dān)心字段寫錯
- 支持主鍵自動生成:支持多達 4 種主鍵策略(內(nèi)含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解決主鍵問題
- 支持 ActiveRecord 模式:支持 ActiveRecord 形式調(diào)用,實體類只需繼承 Model 類即可進行強大的 CRUD 操作
- 支持自定義全局通用操作:支持全局通用方法注入( Write once, use anywhere )
- 內(nèi)置代碼生成器:采用代碼或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 層代碼,支持模板引擎,更有超多自定義配置等您來使用(自動生成代碼)
- 內(nèi)置分頁插件:基于 MyBatis 物理分頁,開發(fā)者無需關(guān)心具體操作,配置好插件之后,寫分頁等同于普通 List 查詢
- 分頁插件支持多種數(shù)據(jù)庫:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多種數(shù)據(jù)庫
- 內(nèi)置性能分析插件:可輸出 SQL 語句以及其執(zhí)行時間,建議開發(fā)測試時啟用該功能,能快速揪出慢查詢
- 內(nèi)置全局?jǐn)r截插件:提供全表 delete 、 update 操作智能分析阻斷,也可自定義攔截規(guī)則,預(yù)防誤操作
開發(fā)環(huán)境搭建
軟件 | 版本 |
---|---|
HGDB | 安全版V4、企業(yè)版v5及以上版本 |
JDK | 1.6、1.7、1.8 |
Java IDE | Eclipse、IntelliJ IDEA |
MyBatis-Plus | 3.5.1 |
示例項目
結(jié)構(gòu)圖如下:
主要文件介紹:
pom.xml
:導(dǎo)入依賴的jar包
<dependencies> |
注意
使用mybatis-plus可以節(jié)省大量代碼,不要同時導(dǎo)入mybatis和mybatis-plus,可能存在版本沖突。
User.java
:編寫實體類,Lombok簡化代碼
@Data |
注意
mybaitsplus,為mybaits的升級版,不需要寫xml配置文件,直接寫一個接口,model實體類的多加幾個注解即可實現(xiàn)。
不管是mybaits,還是mybaitsplus,數(shù)據(jù)庫里的字段必須和實體類對接上,一模一樣,不然就會報錯。
此時需要使用 @TableName 表名注解指定當(dāng)前實體類對應(yīng)的表名,比如上文中的 User 實體類對應(yīng)表名為 test_user,此外還可以用使用@TableId 注解(標(biāo)注在主鍵上)和 @TableField 注解(標(biāo)注在其他成員屬性上)來指定對應(yīng)的字段名。
UserMapper.java
:創(chuàng)建一個User對象的持久層接口,只需要繼承BaseMapper并且把User對象傳進去即可
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
DemoApplication.java
:啟動類加上掃描mapper的注解
@SpringBootApplication |
application.yml
:全局配置文件,采用yml格式
# DataSource Config |
DemoApplicationTests.java
: 測試類
@SpringBootTest |
結(jié)果:
注意事項
1、使用PaginationInterceptor分頁插件
MyBatis-Plus自帶了一個分頁插件Interceptor,幫我們封裝好了分頁的功能,節(jié)省大量的開發(fā)時間。
針對MyBatis-Plus版本不同,PaginationInterceptor引用的包有所不同。
MyBatis-Plus2.x引用的包:com.baomidou.mybatisplus.plugins.PaginationInterceptor;
MyBatis-Plus3.x引用的包:com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor
采用@Bean注入的方式進行配置數(shù)據(jù)庫方言
paginationInterceptor.setDialectType("postgresql")
見下方代碼:
@Bean |
2、Mybatis-plus3.4.0使用MybatisPlusInterceptor攔截
3.4.0版本對此部分有更新,如果是舊版本升級,會出現(xiàn)分頁失效問題,同時會提示PaginationInterceptor過時,新版本改用了MybatisPlusInterceptor
代碼示例: