场景:项目整合了mybatisplus,进行update更新,前端传值为空时,数据库也进行了更新
UpdateWrapper updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("shop_id", goodsInfo.getShopId());
updateWrapper.eq("goods_id", goodsInfo.getGoodsId());
//获取修改之前的数据
Map oldValue = iShopGoodsService.getOneOfShopGoods(goodsInfo);
boolean update = iShopGoodsService.update(goodsInfo, updateWrapper);
Map newValue = iShopGoodsService.getOneOfShopGoods(goodsInfo);
//记录操作日志
解决方案:
在实体类上使用@TableField注解
/**
* 是否限量商品 -1不限量商品,其他数值指定限量几件
*/
@TableField(strategy = FieldStrategy.NOT_EMPTY)
private String limitGoods;
这样,当前端传过来的limitGoods参数为null或者空字符串,mybatisplus的更新就会拦截此字符串的更新。
FieldStrategy的源码中,一共有4种策略类型。
package com.baomidou.mybatisplus.annotation;
/**
* 字段策略枚举类
*
* @author hubin
* @since 2016-09-09
*/
public enum FieldStrategy {
/**
* 忽略判断
*/
IGNORED,
/**
* 非NULL判断
*/
NOT_NULL,
/**
* 非空判断
*/
NOT_EMPTY,
/**
* 默认的,一般只用于注解里
* <p>1. 在全局里代表 NOT_NULL</p>
* <p>2. 在注解里代表 跟随全局</p>
*/
DEFAULT
}
附上mybatis-plus官网链接地址:
https://baomidou.com/pages/223848/#fieldstrategy文章来源:https://www.toymoban.com/news/detail-503467.html
有兴趣的小伙伴可以点击看看文章来源地址https://www.toymoban.com/news/detail-503467.html
到了这里,关于MyBatis-Plus 更新(update)方法,属性参数为空时进行更新与不进行更新的设置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!