MyBatis-Plus 的 FieldStrategy 属性

前几天做个需求的时候,有几个字段在更新的时候,可能为空。想着MyBatis-Plus有注解可以直接使用,就找寻了一下。此处记录一下。我用的MyBatis-Plus的版本是 3.5.1。版本之间对于 @TableField 中的方法定义有些区别,但大体相差不大。

1、FieldStrategy.IGNORED(我找的就是它)

  • 忽略判断。
  • 无论字段值是否为 null,都会拼接到 SQL 中。
  • 适合需要显式设置 null 值的场景,可能覆盖数据库默认值。

2、FieldStrategy.NOT_NULL

  • 非 NULL 判断。
  • 只有字段值不为 null 时,才会拼接到 SQL 中。
  • 不会将 null 值更新到数据库。

3、FieldStrategy.NOT_EMPTY

  • 非空判断。
  • 比 NOT_NULL 更严格一些。
  • 会检查是否为空字符串 (""),会检查是否为空集合。

4、FieldStrategy.DEFAULT

  • 默认策略。
  • 默认值为 NOT_NULL,可以进行全局配置。

5、FieldStrategy.NEVER

  • 永不加入。
  • 无论字段值是什么,都不会拼接到 SQL 中。
  • 完全排除该字段的更新/插入。
  • 适合敏感字段或只读字段。

在我使用的MyBatis-Plus版本 3.5.1 中,会用到 FieldStrategy 属性的方法有,insertStrategy()、updateStrategy()、whereStrategy()。

可以进行差异化配置:

java 复制代码
@TableField(insertStrategy = FieldStrategy.NOT_NULL, updateStrategy = FieldStrategy.IGNORED)
private String mobile;

注意使用 FieldStrategy.IGNORED 时,数据库的字段不能设置为 NOT NULL。不然会报错。

FieldStrategy 是 MyBatis-Plus 灵活性的重要体现,合理使用可以大大简化数据持久层代码,同时可以保证数据操作的精确性和安全性。

无善无恶心之体,有善有恶意之动;知善知恶是良知,为善去恶是格物。-- 烟沙九洲

相关推荐
jaysee-sjc21 小时前
【练习十二】Java实现年会红包雨小游戏
java·开发语言·算法·游戏·intellij-idea
indexsunny21 小时前
互联网大厂Java求职面试实战:核心技术与业务场景解析
java·spring boot·redis·微服务·kafka·互联网大厂·面试技巧
小涛不学习21 小时前
Java 后端核心框架面试题(Spring / SpringMVC / MyBatis / MyBatis-Plus)
java·spring·mybatis
程序猿大波21 小时前
基于java,SpringBoot和Vue餐饮公司食堂管理系统设计
java·vue.js·spring boot
似水明俊德21 小时前
01-C#.Net-泛型-学习笔记
java·笔记·学习·c#·.net
百锦再21 小时前
飞算 JavaAI:我的编程强力助推引擎
java·spring·ai·编程·idea·code·飞算
wuyaolong0071 天前
Spring Boot 3.4 正式发布,结构化日志!
java·spring boot·后端
hua872221 天前
Golang 构建学习
java·开发语言·学习
Halo_tjn1 天前
Java 三个修饰符 相关知识点
java·开发语言
毕设源码-朱学姐1 天前
【开题答辩全过程】以 广东省非遗文化信息管理系统的设计与实现为例,包含答辩的问题和答案
java