Mybatis-Plus

MyBatis-Plus知識點

MyBatis-Plus(簡稱 MP)

1:官網(wǎng):http://mp.baomidou.com/

參考教程:http://mp.baomidou.com/guide/

使用MyBatis-Plus,需要在pom文件中引入插件:

注意:引入?MyBatis-Plus?之后請不要再次引入?MyBatis?以及?MyBatis-Spring,以避免因版本差異導(dǎo)致的問題。

?----------------------------功能:CRUD 接口

一:分布式id主鍵生成策略:

如何修改主鍵生成策略?

? ? ? ? ? ? 在實體類上的id字段添加一個注解@TableId(type = IdType.AUTO),然后idType.后邊有很多的選擇。

1):ID_WORKER

MyBatis-Plus默認的主鍵策略是:ID_WORKER ?全局唯一ID

2):自增策略

? ? ? ? ? ? 實現(xiàn):1)需要在創(chuàng)建數(shù)據(jù)表的時候設(shè)置主鍵自增

????????????????????????2)實體字段中配置 @TableId(type = IdType.AUTO)

3):input策略

? ? ? ? 數(shù)據(jù)庫優(yōu)化策略,其中之一:縱向表拆分,例如input:

一張表,由若干個字段,其中有一個字段內(nèi)容特別長,就可以單獨把這個字段提取出來成一張表,這個表的id就是主表的id

2:update

3:自動填充

例如:數(shù)據(jù)庫中有這樣兩種字段:createTime和updateTime

? ? ? ? 3.1:數(shù)據(jù)庫層面解決方案:

? ? ? ? ? ? ? ? ? ? 在創(chuàng)建好的字段添加默認值,createTime:Curent_Time_stamp

? ? ? ? ? ? ? ? ? ? ? ? updateTime:Curent_Time_stamp,然后勾選中更新框

? ? ? ? 3.2:業(yè)務(wù)層面解決方案

第一步:

????????????????在實體類上添加注解:? ? @TableField(fill = FieldFill.INSERT)? ? ? ? ? ? ? ? ?:添加的時候自動填充

? ?? @TableField(fill = FieldFill.INSERT_UPDATE):添加和更新的時候自動填充

第二步:添加一個元器件處理器

創(chuàng)建一個handler包,然后創(chuàng)建一個MyMetaObjectHandler,實現(xiàn) MetaObjectHandler接口

? 記住:根據(jù)系統(tǒng)決定你要采用哪種方案,主要就是看你是否要切換數(shù)據(jù)源。

-----------------------

mybatis和mybatis_plus的區(qū)別:

1:數(shù)據(jù)庫中的 _ 分割,在實體類是 駝峰命名法,但是在向數(shù)據(jù)庫中添加更新的時候,mybatis_plus智能自動轉(zhuǎn)換,而mybatis不能

-------------------------

4樂觀鎖:

實現(xiàn):

1):數(shù)據(jù)庫中添加version字段

2):實體類添加?@Version 注解

3):元對象處理器接口添加version的insert默認值

4):?MybatisPlusConfig 中注冊 Bean

? ? ? ? 樂觀鎖插件

----------------------select

1:查詢單個數(shù)據(jù):

userMapper.selectById(1L);

2:批量查詢

userMapper.selectBatchIds(Arrays.asList(1, 2, 3));

3:簡單的條件查詢

userMapper.selectByMap(map);

------------------------分頁

1):在配置類中添加插件

--------------------------------delete

1:刪除單條數(shù)據(jù)

userMapper.deleteById(8L);

2:批量刪除:

userMapper.deleteBatchIds(Arrays.asList(8, 9, 10));

3:簡單的條件查詢刪除

userMapper.deleteByMap(map);

4:邏輯刪除(最重要的)

物理刪除:真實刪除:將對應(yīng)數(shù)據(jù)從數(shù)據(jù)庫中刪除,之后查詢不到此條被刪除數(shù)據(jù)

邏輯刪除:假刪除,將對應(yīng)數(shù)據(jù)中代表是否被刪除字段狀態(tài)修改為“被刪除狀態(tài)”,之后在數(shù)據(jù)庫中仍舊能看到此條數(shù)據(jù)記錄

1):數(shù)據(jù)庫中添加 "deleted",字段類型:tinyInt? 1:表示刪除,0表示邏輯刪除

2):實體類添加deleted字段

并加上 @TableLogic 注解 和 @TableField(fill = FieldFill.INSERT) 注解

3):元對象處理器接口添加deleted的insert默認值

4):application.properties 加入配置

此為默認值,如果你的默認值和mp默認的一樣,該配置可無

5):在配置類中添加插件

6):測試

--------------------------------------------性能分析

性能分析攔截器,用于輸出每條 SQL 語句及其執(zhí)行時間

SQL 性能執(zhí)行分析,開發(fā)環(huán)境使用,超過指定時間,停止運行。有助于發(fā)現(xiàn)問題

1):配置插件

參數(shù):maxTime: SQL 執(zhí)行最大時長,超過自動停止運行,有助于發(fā)現(xiàn)問題。

參數(shù):format: SQL是否格式化,默認false。

2)在 MybatisPlusConfig 中配置

3)Spring Boot 中設(shè)置dev環(huán)境

=======================04條件構(gòu)造器

如果想進行復(fù)雜條件查詢,那么需要使用條件構(gòu)造器 Wapper,涉及到如下方法

1、delete

2、selectOne

3、selectCount

4、selectList

5、selectMaps

6、selectObjs

7、update

查資料自己練習(xí)。

=======================================

一些常用的方法:

https://www.it610.com/article/1287685735930966016.htm

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容