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爷怀,以避免因版本差異導致的問題诱建。
?----------------------------功能: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)造器
如果想進行復雜條件查詢,那么需要使用條件構(gòu)造器 Wapper摘昌,涉及到如下方法
1速妖、delete
2、selectOne
3聪黎、selectCount
4罕容、selectList
5、selectMaps
6挺举、selectObjs
7杀赢、update
查資料自己練習。
=======================================
一些常用的方法: