方案一:修改全局更新策略(不推荐)
mybatis-plus:
global-config:
#字段策略 IGNORED:"忽略判断"、NOT_NULL:"非NULL判断"、NOT_EMPTY:"非空判断"
field-strategy: IGNORED
不推荐使用原因:作用范围太广,调用MyBatis-Plus封装的update会不经意将字段改为空
方案二:修改指定字段的更新策略(不推荐)
@TableField(strategy = FieldStrategy.IGNORED)
private String name;
不推荐使用原因:相对于方案一作用范围相对较小,但调用MyBatis-Plus封装的update也会不经意将字段改为空
方案三:使用LambdaUpdateWrapper只在特定需求下做处理(推荐)
Order order = new Order();
order.setId(1);
order.setPrice(3.8)
order.setName(null)
LambdaUpdateWrapper<Order> lambdaUpdate = Wrappers.lambdaUpdate();
//构建where条件根据id修改
lambdaUpdate.eq(Order::getId, order.getId());
//name属性为空时可以修改字段为NULL
if (StringUtils.isEmpty(order.getName())) lambdaUpdate.set(Order::getName, null);
//此时生成的SQL语句为update order set price = 3.8, name = null where id = 1
super.update(order, lambdaUpdate);
推荐原因:不影响任何地方只在此处生效