MybatisPlus更新時部分失敗的問題解決
1 問題模擬
1 添加依賴
在spring環(huán)境添加下面依賴包,如springboot環(huán)境,則添加另一個依賴包.
spring環(huán)境
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.4.0</version>
</dependency>springboot環(huán)境
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.0</version>
</dependency>2 添加實(shí)體對象
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("dev_student") // 表名
public class Student {
// 主鍵
@TableId
private String id;
private String score;
private String name;
private Integer age;
private Date creatTime;
private String desc;
}3 模擬調(diào)用
@Test
public void testUpdateById(){
// 參數(shù)從前端傳遞,此處模擬獲取
Student student = new Student();
student.setId("1111");
student.setName("小明");
student.setAge(18);
student.setCreatTime(new Date());
// 模擬前端更新 刪除了備注信息
student.setDesc("");
// 模擬前端更新 將字段指為空傳遞
student.setScore(null);
studentMapper.updateById(student);
}4 查詢結(jié)果
SQL語句目標(biāo): 將id為1111的對應(yīng)的表字段更新為我們設(shè)置的值.
執(zhí)行結(jié)果: 發(fā)現(xiàn)id為1111的數(shù)據(jù),其他信息都進(jìn)行了修改,備注和分?jǐn)?shù)字段沒有被修改.不符合我們的目標(biāo)要求.
2 問題分析
根據(jù)上述問題分析,懷疑是不是配置有問題,導(dǎo)致數(shù)據(jù)沒有更新成功.
官網(wǎng)簡介:MyBatis-Plus (baomidou.com)
查詢了一下官網(wǎng)信息:
在mybatis-plus 配置文件后,有個global-config 全局配置,里面配置了更新、插入策略。
全局策略有:
- IGNORED:忽略
- NOT_NULL:非 NULL,默認(rèn)策略
- NOT_EMPTY:非空
關(guān)于mybatis-plus插入或更新的字段有 空字符串 或者 null 時,默認(rèn)是不進(jìn)行更新數(shù)據(jù)庫的.
此外,還能對單個字段進(jìn)行插入或更新設(shè)置.
關(guān)聯(lián)的字段策略有:
- IGNORED:忽略
- NOT_NULL:非 NULL,默認(rèn)策略
- NOT_EMPTY:非空
- NEVER 從不更新,不管字段是否有值,都不進(jìn)行更新
- DEFAULT 追隨全局配置
問題解決
1 全局設(shè)置
mybatis-plus:
global-config:
db-config:
update-strategy: IGNORED2 字段設(shè)置
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("dev_student")
public class Student {
@TableId
private String id;
private String score;
private String name;
private Integer age;
private Date creatTime;
// 更新時 忽略 不做判空和null校驗(yàn)
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String desc;
}3 問題總結(jié)
關(guān)于mybatis-plus更新時部分字段失敗的問題, 查看官方文檔后,很容易知道問題在哪里,修改起來也很方便. 對于未知的新技術(shù),需要多多去學(xué)習(xí)和關(guān)注官方文檔,才能更好的使用它.
到此這篇關(guān)于MybatisPlus更新時部分失敗的問題解決的文章就介紹到這了,更多相關(guān)MybatisPlus更新失敗內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot+Eureka實(shí)現(xiàn)微服務(wù)負(fù)載均衡的示例代碼
這篇文章主要介紹了SpringBoot+Eureka實(shí)現(xiàn)微服務(wù)負(fù)載均衡的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
在Java中避免NullPointerException的解決方案
這篇文章主要介紹了在Java中避免NullPointerException的解決方案,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04
Java數(shù)據(jù)結(jié)構(gòu)之二叉搜索樹詳解
二叉搜索樹作為一個經(jīng)典的數(shù)據(jù)結(jié)構(gòu),具有鏈表的快速插入與刪除的特點(diǎn),同時查詢效率也很優(yōu)秀,所以應(yīng)用十分廣泛。本文將詳細(xì)講講二叉搜索樹的原理與實(shí)現(xiàn),需要的可以參考一下2022-06-06
Spring Boot項目利用Redis實(shí)現(xiàn)集中式緩存實(shí)例
本篇文章主要介紹了Spring Boot項目利用Redis實(shí)現(xiàn)集中式緩存實(shí)例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06
springboot?log4j2.xml如何讀取application.yml中屬性值
這篇文章主要介紹了springboot?log4j2.xml如何讀取application.yml中屬性值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12

