Mybatis-Plus 的updateById(T entity)方法

文档地址 https://baomidou.com/guides/data-interface/#update

简介

updateById(shop) 是 MyBatis-Plus 提供的一个便捷方法,用于根据实体对象的主键 ID 更新对应的数据库记录。

为什么传入 shop 就可以?

在 MyBatis-Plus 中,updateById 方法的签名如下:

int updateById(@Param(Constants.ENTITY) T entity);

这里的 T 是实体类的类型,entity 是包含更新数据的对象。当你调用 updateById(shop) 时,MyBatis-Plus 会:

  1. shop 对象中提取主键字段的值(通常是 id 字段)。
  2. 根据主键值生成 SQL 语句中的 WHERE 条件。
  3. shop 对象中非 null 的字段作为更新内容,生成 SET 子句。

因此,尽管方法名是 updateById,它实际上是根据传入对象的主键值来定位记录,并使用该对象的非 null 字段更新对应的数据库记录。

注意事项

  • 主键字段必须有值:确保 shop 对象的主键字段(如 id)不为 null,否则无法定位要更新的记录。

  • 默认不更新 null 字段:MyBatis-Plus 默认策略是仅更新非 null 的字段。如果希望将某些字段更新为 null,需要在实体类的字段上使用注解进行配置,例如:

    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String someField;
    

    这样配置后,即使 someFieldnull,也会在更新时包含该字段。

  • 自动填充字段的处理:对于需要自动填充的字段(如更新时间),确保在实体类中使用了相应的注解,并在更新操作中正确处理这些字段。

总之,updateById(shop) 是一种简洁的方式,用于根据主键更新记录。只需确保传入对象的主键字段有值,并根据需要配置字段的更新策略,即可灵活地控制更新行为。

posted @ 2025-04-12 20:08  kuki'  阅读(375)  评论(0)    收藏  举报