baomidou / mybatis-plus

An powerful enhanced toolkit of MyBatis for simplify development
https://baomidou.com
Apache License 2.0
16.41k stars 4.31k forks source link

因业务要求更新字段为 null,用了更新策略注解,但SQL set的值是 '' #4010

Closed HeHuan-666 closed 2 years ago

HeHuan-666 commented 3 years ago

当前使用版本(必填,否则不予处理)

3.4.3.1 ### 该问题是如何引起的?(确定最新版也有问题再提!!!) /** * 年中调整预算 */ @TableField(value = "budget_adjust", updateStrategy = FieldStrategy.IGNORED, jdbcType = JdbcType.DECIMAL) private BigDecimal budgetAdjust; ### 重现步骤(如果有就写完整) ### 报错信息 UPDATE budget_record SET budget=6.18,budget_adjust='' WHERE (id = 1663) 这个注解中的更新值默认是 '',在注解上如何指定此值默认是 null? /** * 字段 update set 部分注入, 该注解优于 el 注解使用 *

* 例1:@TableField(.. , update="%s+1") 其中 %s 会填充为字段 * 输出 SQL 为:update 表 set 字段=字段+1 where ... *

* 例2:@TableField(.. , update="now()") 使用数据库时间 * 输出 SQL 为:update 表 set 字段=now() where ... */ String update() default "";

miemieYaho commented 3 years ago

注解没有默认值,你需要debug看你的budgetAdjust在update时是不是为null