MyBatis-Plus入門(雜)

1-1 MyBatis與JPA對比

image.png

image.png

image.png

1-2 MyBatis-Plus簡介

image.png

image.png

image.png

image.png

2-1 通用傳統(tǒng)模式簡介及通用mapper新增方法

image.png
配置文件
image.png
通用mapper方法大綱
image.png

2-2 常用注解

1.@TableName 表名映射

數(shù)據(jù)庫名不同,在類上增加@TableName("mp_user")

2.@TableId 主鍵映射

主鍵ID的駝峰一般無法識別,在主鍵屬性上增加@TableId

3.@TableField 字段映射

屬性與字段名不相同,在屬性上增加@TableField("name")

當表名為 mp_user 時,在不改變 實體類的名字的情況下,通過添加 @TableName(“表名mp_user”)的方式來指定對應的數(shù)據(jù)庫表名,以此解決在不編寫sql語句的情況下,實體類的名字與數(shù)據(jù)庫表名不一致而導致無法進行表操作的問題。
image.png

2-3 排除非表字段的三種方式

第一種:
添加 transient 標識 某一字段不參與實例化過程,一般用于過渡字段,在數(shù)據(jù)庫表中沒有對應的字段,如果直接添加而進行實例化的排除, 會被自動進行映射到數(shù)據(jù)庫表中,而由于沒有對應的字段,會報錯。


image.png

第二種:
將要排除的字段聲明為靜態(tài)變量,手動創(chuàng)建 對應的靜態(tài)GET/SET 方法,靜態(tài)的屬性的靜態(tài)方法只能使用類進行調(diào)用,此時,實例化的過程會將該靜態(tài)字段排除掉,在調(diào)用 MP 進行映射時不會被映射進去


image.png

第三種:
使用 @TableField(exist=false)標識當前變量不是數(shù)據(jù)庫表中的字段,這種情況下,該屬性不會被映射到數(shù)據(jù)庫中


image.png

3-1 普通查詢

普通查詢方法:
1、List<T> selectBatch(List<T> ids)
2、List<T> selectByMap(Map<key,value> map)
PS:map中的key為數(shù)據(jù)庫中的列名(如果輸入的是實體類中的屬性名會報錯)、value是列對應的值


image.png
selectById 普通查詢
selectBatchIds 多個值查詢 Arrays.asList()
selectByMap 條件查詢 Map的key為字段,生成的語句為where name= ? and age=?

selectBatchIds(@Param(Constants.COLLECTION)Collection<? extends Serializable> idList);
根據(jù)id集合獲取對象集合list
Arrays.asList(id1,id2)
將list集合參數(shù)進行forEach輸出:
userList.forEach(System.out::println);


image.png

3-2 條件構造器查詢

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

3-3 select不列出全部字段

選擇查詢表中的字段

select(字段1,字段2) 選擇字段返回,select可以寫在queryWrapper后面:


image.png

select排除某些字段

去除某些列名的數(shù)據(jù)返回
.select(User.class, info->!info.getColumn().equals("create_time")&&
!info.getColumn().equals("email"));
數(shù)據(jù)返回create_time和email


image.png

3-4 condition作用

like(condition,"字段",value) 判定哪個字段不為空時,進行判定,
與原mybatis中的
<if test="focus_count != null ">
是一個道理,那么在這里,其實跟if test 比較起來,也差不多,
if test 需要寫兩遍 上判定,下判定
同樣的在mp中的寫法 寫得也算簡短了


image.png

如果判定isNotEmpty為true,則進行該字段的對比查詢
如果返回false,說明這個字段為空,不進行按此字段查詢


image.png

3-5 實體作為條件構造器構造方法的參數(shù)

image.png

實體對象中設置名字的模糊查詢
不想設定等值搜索,將這里設定注解 condition.


image.png

年齡小于的注入


image.png

3-6 AllEq用法

allEq的用法


image.png

image.png

allEq第二個參數(shù)設定false,值為null的忽略掉


image.png

忽略如果鍵為name時的查詢參數(shù)


image.png

3-7 其他使用條件構造器的方法

以map的形式,比實體類的優(yōu)勢在于選擇查詢時,不會有那么多null的字段鍵返回.
image.png

image.png

selectOne只能查返回數(shù)據(jù)中僅一條的


image.png
image.png
image.png

3-8 lambda條件構造器

Lambda表達式查詢方式
三種Lambda表達式創(chuàng)建方式


image.png

使用lambda表達式進行l(wèi)ike和lt的搜索
防止編譯的錯誤


image.png

使用Lambda查詢多條件
提供了防誤寫功能,寫錯就報錯,防止編譯的錯誤


image.png
image.png

4-1 自定義sql

自定義SQL的兩種方式:

第一種: 使用自定義注解 的方式實現(xiàn),在 dao 層的方法上使用@Select (“sql 語句”)的方式編寫 sql 語句,會自動映射到數(shù)據(jù)庫表中
image.png
第二種: 使用創(chuàng)建 mapper.xml 的方式來創(chuàng)建 配置文件,通過在配置文件中 創(chuàng)建 sql 語句,并配置 namespace 名稱空間,指向有效的 dao 層,從而實現(xiàn)數(shù)據(jù)的映射
image.png
使用第二種需要對application.yml文件進行配置
image.png

4-2 分頁查詢

分頁查詢 :
分頁插件配置類: 創(chuàng)建 MybatisPlusConfig類,注入到 Spring中進行管理


image.png

分頁查詢的第一種方式:
使用userMapper.selectPage(page,data);返回結果為 實體類 javabean


image.png

分頁查詢的第二種方式:
使用userMapper.selectPage(page,data);返回結果為 Map<String,Object>集合類


image.png
image.png

image.png

5-1 更新方法

updateById


image.png

updateWrapper


image.png

updateWrapper2


image.png

updateWrapper3


image.png

updateWrapperLambda


image.png

updateWrapperLambdaChain


image.png

5-2 刪除方法

deleteById


image.png

deleteByMap


image.png

deleteBatchIds


image.png

deleteByWrapper


image.png

6-1 AR模式

AR模式的使用:

條件1:
必須存在對應的原始mapper并繼承Model<User> 泛型類,并配置相應類注解,
同時申明序列號 serialVersionUID = 1L


image.png

條件2:
在 mapper 接口 中要 繼承 BaseMapper<Object.class> 泛型類


image.png

6-2 基本配置

創(chuàng)建mybatis-config.xml 配置文件


image.png

image.png
image.png

7-1 通用service

service所有方法


image.png

image.png

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

相關閱讀更多精彩內(nèi)容

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