mybatis-plus的update方法,到底会不会更新null值?看这一篇就够了

普通的设置值。需要传入一个Wrapper对象

默认情况下是不会更新null值的,也就是只更新设置值的字段

```

复制代码
	LambdaUpdateWrapper<OrderChildRoom> orderChildRoomUpdateWrapper = new LambdaUpdateWrapper<>();
	orderChildRoomUpdateWrapper.set(OrderChildRoom::getRemark,req.getRemark());
	orderChildRoomUpdateWrapper.eq(OrderChildRoom::getId,req.getId());
	orderChildRoomService.update(orderChildRoomUpdateWrapper);
```

设置字段reamrk的值,只会更新这个字段,使用id作为查询条件 。

还有一种使用方式

复制代码
		orderChildRoom.setRemark("aaa");
		LambdaUpdateWrapper<OrderChildRoom> orderChildRoomUpdateWrapper = new LambdaUpdateWrapper<>();
		orderChildRoomUpdateWrapper.set(OrderChildRoom::getRemark,"bbb");
		orderChildRoomUpdateWrapper.eq(OrderChildRoom::getId,5);
		orderChildRoomService.update(orderChildRoom,orderChildRoomUpdateWrapper);

传入一个对象,和wrapper, 两个对象如果都对字段进行了赋值,那么会更新字段。比如现在都写入了remark字段,那么以wrapper的为准,sql会变成

复制代码
UPDATE user SET remark="aaa", remark="bbb"  WHERE (id = 5);

mysql处理以后面的为准,也就是wrapper为准

结论: 默认不会更新null对象字段。 使用后一种方式,字段都会更新,如果字段重复,使用wrapper为准。

相关推荐
段ヤシ.17 小时前
回顾Java知识点,面试题汇总Day17(持续更新)
java·springboot·spring security·shiro·mybatis-plus·jdbctemplate·spring data jpa
Mahir082 天前
MyBatis 分页与插件深度解密:从插件机制到三大分页方案原理全解
java·后端·mybatis·mybatis-plus·大厂面试题
谷哥的小弟2 天前
图文详解Spring Boot整合MyBatisPlus(附源码)
mybatis·源码·springboot·mybatis-plus·整合
递归尽头是星辰2 个月前
Java类型安全查询框架体系:QueryDSL、Ebean、jOOQ、MyBatis-Plus
mybatis-plus·querydsl·ebean·jooq·动态 sql
稻草猫.2 个月前
MyBatis-Plus高效开发全攻略
java·数据库·后端·spring·java-ee·mybatis·mybatis-plus
为美好的生活献上中指2 个月前
*Java 沉淀重走长征路*之——《MyBatis与MyBatis-Plus一文打尽!》
java·jvm·maven·mybatis·mybatis-plus
Sun 32853 个月前
MyBatis-Plus 新版代码生成器的使用
java·spring boot·后端·spring·配置·mybatis-plus·代码生成器
ruleslol3 个月前
MyBatis-Plus11:枚举处理器
mybatis-plus
ruleslol3 个月前
MyBatis-Plus12:JSON处理器
mybatis-plus
ruleslol3 个月前
MyBatis-Plus13:自定义 TypeHandler
mybatis-plus