成都网站seo排名优化,微信如何建商城网站,wordpress 主题详解,网站到期后如何转域名MyBatis-Plus 默认情况下会根据字段的值是否为 null 来决定是否生成对应的 UPDATE 语句。这是由 更新策略 决定的#xff0c;默认的行为是 忽略 null 值#xff0c;即如果字段值为 null#xff0c;该字段将不会出现在 UPDATE 语句中。
默认行为分析 MyBatis-Plus 默认的 Fi…MyBatis-Plus 默认情况下会根据字段的值是否为 null 来决定是否生成对应的 UPDATE 语句。这是由 更新策略 决定的默认的行为是 忽略 null 值即如果字段值为 null该字段将不会出现在 UPDATE 语句中。
默认行为分析 MyBatis-Plus 默认的 FieldStrategy 配置如下
FieldStrategy.NOT_NULL默认当字段值为 null 时UPDATE 语句中会忽略该字段。 这是为了避免不必要地将字段更新为 null从而减少对现有数据的意外影响。
FieldStrategy.IGNORED忽略字段值是否为 null即使为 null 也会生成对应的 UPDATE 语句。
FieldStrategy.NOT_EMPTY对于字符串只有当字段值非空! “”时才会生成 UPDATE 语句对于其他类型行为类似于 NOT_NULL。
如何更新 null 值 如果需要更新字段为 null有以下几种解决方法
针对字段设置 FieldStrategy.IGNORED 在实体类的字段上使用 TableField 注解并指定 updateStrategy 为
FieldStrategy.IGNOREDTableField(updateStrategy FieldStrategy.IGNORED)
private String facilities;这样即使 facilities 为 nullUPDATE 语句中也会包含它。
修改全局更新策略 如果你希望全局都允许 null 值更新可以在 MyBatis-Plus 配置中调整全局 update-
strategy
application.yml
mybatis-plus:global-config:db-config:update-strategy: ignored这会使所有字段在更新时忽略值是否为 null。
使用手动 SQL 强制更新 可以直接在 Mapper 接口中编写手动 SQL确保字段被强制更新 Update(“UPDATE cm_ci_em_info SET facilities #{facilities} WHERE id #{id}”) void updateFacilities(Param(“id”) String id, Param(“facilities”) String facilities);
这种方式可以完全控制 UPDATE 语句的生成逻辑。
使用动态 SQL 如果需要更精细地控制更新逻辑可以在 Mapper 的 XML 文件中使用动态 SQL。例如
update idupdateByIdUPDATE cm_ci_em_infosetif testfacilities ! nullfacilities #{facilities},/ifif testfacilities nullfacilities NULL,/if/setWHERE id #{id}
/update示例对比 实体字段为 null 的更新效果 以下是 FieldStrategy 的不同配置对应的 SQL 行为 默认 NOT_NULL默认策略 实体 facilities null
UPDATE cm_ci_em_info SET model_id ? WHERE id ?FieldStrategy.IGNORED忽略 null 检查 实体 facilities null
UPDATE cm_ci_em_info SET facilities NULL, model_id ? WHERE id ?总结 默认情况下MyBatis-Plus 会忽略值为 null 的字段不生成 UPDATE 语句。如果你需要更新字段为 null 对字段单独配置 TableField(updateStrategy FieldStrategy.IGNORED)。 修改全局策略 update-strategy 为 ignored。 编写手动 SQL 强制更新。 使用动态 SQL 明确处理 null 值的更新逻辑