MybatisPlus更新時(shí)部分失敗的問題解決
1 問題模擬
1 添加依賴
在spring環(huán)境添加下面依賴包,如springboot環(huán)境,則添加另一個(gè)依賴包.
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í)體對(duì)象
@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的對(duì)應(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 配置文件后,有個(gè)global-config 全局配置,里面配置了更新、插入策略。
全局策略有:
- IGNORED:忽略
- NOT_NULL:非 NULL,默認(rèn)策略
- NOT_EMPTY:非空
關(guān)于mybatis-plus插入或更新的字段有 空字符串 或者 null 時(shí),默認(rèn)是不進(jìn)行更新數(shù)據(jù)庫的.
此外,還能對(duì)單個(gè)字段進(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: IGNORED
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; // 更新時(shí) 忽略 不做判空和null校驗(yàn) @TableField(updateStrategy = FieldStrategy.IGNORED) private String desc; }
3 問題總結(jié)
關(guān)于mybatis-plus更新時(shí)部分字段失敗的問題, 查看官方文檔后,很容易知道問題在哪里,修改起來也很方便. 對(duì)于未知的新技術(shù),需要多多去學(xué)習(xí)和關(guān)注官方文檔,才能更好的使用它.
到此這篇關(guān)于MybatisPlus更新時(shí)部分失敗的問題解決的文章就介紹到這了,更多相關(guān)MybatisPlus更新失敗內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot+Eureka實(shí)現(xiàn)微服務(wù)負(fù)載均衡的示例代碼
這篇文章主要介紹了SpringBoot+Eureka實(shí)現(xiàn)微服務(wù)負(fù)載均衡的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11在Java中避免NullPointerException的解決方案
這篇文章主要介紹了在Java中避免NullPointerException的解決方案,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04Linux部署springboot項(xiàng)目彩色日志打印方式
這篇文章主要介紹了Linux部署springboot項(xiàng)目彩色日志打印方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04Java數(shù)據(jù)結(jié)構(gòu)之二叉搜索樹詳解
二叉搜索樹作為一個(gè)經(jīng)典的數(shù)據(jù)結(jié)構(gòu),具有鏈表的快速插入與刪除的特點(diǎn),同時(shí)查詢效率也很優(yōu)秀,所以應(yīng)用十分廣泛。本文將詳細(xì)講講二叉搜索樹的原理與實(shí)現(xiàn),需要的可以參考一下2022-06-06Spring Boot項(xiàng)目利用Redis實(shí)現(xiàn)集中式緩存實(shí)例
本篇文章主要介紹了Spring Boot項(xiàng)目利用Redis實(shí)現(xiàn)集中式緩存實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06springboot?log4j2.xml如何讀取application.yml中屬性值
這篇文章主要介紹了springboot?log4j2.xml如何讀取application.yml中屬性值問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12