博客
关于我
Mybatis Plus字段为空值时未更新解决方案
阅读量:796 次
发布时间:2023-03-22

本文共 1092 字,大约阅读时间需要 3 分钟。

如何解决MyBatis Plus UpdateById方法中字段为空值未更新的问题?以下是详细的解决方案:

  • 注解方式

    在需要更新的字段上使用@TableField注解,并设置fill属性为FieldFill.UPDATE。这样,在更新操作时,即使字段为空,MyBatis Plus也会将字段值填充到SQL语句中。例如:

    @Data
    @TableName("shop_item")
    public class ShopItem implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(type = IdType.INPUT)
    private String id;
    private String itemName;
    @TableField(fill = FieldFill.UPDATE)
    private Double itemPrice;
    // 其他字段...
    }

    使用此注解后,SQL语句会包含更新字段,即使值为空。

  • 全局配置方式

    在application.yml中设置全局配置,指定update-strategy为IGNORED。这样可以忽略字段为空的情况:

    mybatis-plus:
    global-config:
    db-config:
    update-strategy: IGNORED

    这样所有字段都会忽略空值判断。

  • 使用UpdateWrapper

    在Mapper类中使用UpdateWrapper进行更新操作,手动设置需要更新的字段及其值。例如:

    public interface ShopItemMapper extends Mapper
    {
    @Update
    void updateShopItem(@Param("id") String id, @Param("itemName") String itemName, @Param("itemPrice") Double itemPrice);
    }

    或使用lambda表达式:

    mapper.update(null, Wrappers.
    lambdaUpdate()
    .set(ShopItem::getItemPrice, null));
  • 通过以上方法,可以有效解决字段为空值未更新的问题。选择哪种方案取决于具体需求和项目结构。

    转载地址:http://xtqfk.baihongyu.com/

    你可能感兴趣的文章