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í)。
=======================================
一些常用的方法: