Mybatis-plus 修改数据时若入参为空不会拼接 set 字段

当使用Mybatis-plus进行数据修改时,如果传入参数为空,服务器上不会自动拼接'SET'字段。解决此问题的方法是在实体字段上设置策略为FieldStrategy.IGNORED。异常日志显示缺少'SET'部分,正确的SQL应包含'SET'关键字来更新字段。参考代码和字段策略源码可供查阅。

问题描述:本地调试会拼接,服务器不会拼接 set 字段名=””

解决方法:操作实体字段加上策略:strategy = FieldStrategy.IGNORED

服务器异常日志脚本:update 表   where (bus_id = ?)

正确效果为:update 表 set 字段=”” where (bus_id = ?)


示例代码:

Wrapper<ModuleUserPo> moduleUserPoWrapper = new EntityWrapper<>();
moduleUserPoWrapper .eq("bus_id", busId);

ModuleUserPo moduleUserPo = new ModuleUserPo ();
moduleUserPo.setYjMc(cfgParam.getYj());
moduleUserPo.setJsMc(cfgParam.getFz());
moduleUserMapper.update(moduleUserPo, moduleUserPoWrapper );
/**
 * <p>
 * 用户实体
 * </p>
 *
 * @author 
 * @since 2019-12-20
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("module_user")
public class ModuleUserPo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 姓名
     */
    @TableField(value = "YJ_MC", strategy = FieldStrategy.IGNORED)
    private String yjMc;

    /**
     * 姓名
     */
    @TableField(value = "JS_MC", strategy = FieldStrategy.IGNORED)
    private String jsMc;
	
}

附:字段策略源码
 

/**
 * <p>
 * 字段策略枚举类
 * </p>
 *
 * @author hubin
 * @Date 2016-09-09
 */
public enum FieldStrategy {
    IGNORED(0, "忽略判断"),
    NOT_NULL(1, "非 NULL 判断"),
    NOT_EMPTY(2, "非空判断");

    /**
     * 主键
     */
    private final int key;

    /**
     * 描述
     */
    private final String desc;

    FieldStrategy(final int key, final String desc) {
        this.key = key;
        this.desc = desc;
    }

    public static FieldStrategy getFieldStrategy(int key) {
        FieldStrategy[] fss = FieldStrategy.values();
        for (FieldStrategy fs : fss) {
            if (fs.getKey() == key) {
                return fs;
            }
        }
        return FieldStrategy.NOT_NULL;
    }

    public int getKey() {
        return this.key;
    }

    public String getDesc() {
        return this.desc;
    }

}
	

感谢查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值