当前位置: 首页 > news >正文

MyBatis Plus注解 @TableField

1. 概述

@TableFieldMyBatis-Plus 框架提供的核心注解之一,用于映射实体类字段与数据库表列的关系,并配置字段在 CRUD 操作中的行为策略。
作用范围:实体类的成员变量

2. 核心属性说明

@TableField 注解具有多个属性,其中最常用的有 valueexistfill

  1. value 属性: 用于指定字段在数据库表中的列名,如果实体类字段名与数据库表列名不一致时,通过该属性指定映射关系。示例:

    @TableField(value = "user_name") // 数据库列名为 user_name,实体字段为 userName
    private String userName;
    
  2. exist 属性: 用于指定字段是否为数据库表中的字段,如果为 false,则表示该字段仅在Java实体类中存在,而不对应数据库表中的列,避免 MyBatis-Plus 生成 SQL 时包含该字段。示例:

    @TableField(exist = false) // 该字段不在数据库表中
    private String tempData;
    
  3. fill 属性: 用于指定字段的自动填充策略,结合 MetaObjectHandler 接口的实现,可以实现创建时间、更新时间等字段的自动填充。常用的策略有:

    • FieldFill.DEFAULT:不进行自动填充。
    • FieldFill.INSERT:只在插入数据时自动填充。
    • FieldFill.UPDATE:只在更新数据时自动填充。
    • FieldFill.INSERT_UPDATE:在插入和更新数据时都进行自动填充。
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;@TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

3. 策略配置

在 MyBatis-Plus 中,FieldStrategy 是用于控制实体类字段在 CRUD 操作 中如何被处理的核心枚举类,主要通过 @TableField 注解的 insertStrategy(插入策略)updateStrategy(更新策略)whereStrategy(查询条件策略) 三个属性配置。

3.1 FieldStrategy 枚举的 5 种策略

策略值核心含义适用操作类型典型场景
IGNORED完全忽略字段的空值/空内容判断,无论字段值是什么(null/""/有效值),都会参与操作。插入、更新、查询主动将字段设为 null(如清空数据)、必须插入空字符串("")等场景。
NOT_NULL(默认)仅当字段值 不为 null 时,才参与操作(空字符串 "" 会被忽略)。插入、更新、查询大部分常规场景,避免 null 覆盖现有值,仅处理明确赋值的非空字段。
NOT_EMPTY仅当字段值 不为 null 且不为空字符串 "" 时,才参与操作(仅对字符串有效)。插入、更新、查询字符串字段需严格校验“非空且非空串”,如用户名、手机号等必填项。
NEVER字段始终不参与任何操作(CRUD 全忽略)。插入、更新、查询临时字段、计算属性(如 transient 修饰的字段),无需与数据库交互的字段。
DEFAULT跟随全局配置的策略(不常用,一般用具体策略替代)。插入、更新、查询需统一遵循全局策略时使用(优先级低于局部注解配置)。

3.2 三大注解属性的作用(@TableField 中配置)


@TableField 通过以下三个属性分别控制 插入、更新、查询 时的字段策略,默认值均为 NOT_NULL

注解属性作用范围说明
insertStrategy插入操作(insert控制字段在执行 insert 时是否被写入 SQL 的 INSERT 语句。
updateStrategy更新操作(update控制字段在执行 update 时是否被写入 SQL 的 SET 语句。
whereStrategy查询操作(select控制字段在生成查询条件(如 WHERE 子句)时是否被纳入条件判断。

示例:

 // 插入时允许为 null(如备注,可选填)@TableField(insertStrategy = FieldStrategy.IGNORED)private String remark;
// 更新时允许将 nickname 设为 null(如用户主动清空昵称)@TableField(updateStrategy = FieldStrategy.IGNORED)private String nickname;

3.3 全局策略

全局策略:可在配置文件中设置默认策略(如 application.yml),作用于所有未单独配置的字段:

mybatis-plus:global-config:db-config:field-strategy: not_null # 全局默认策略(插入、更新、查询)

局部策略:@TableField 的 insertStrategy/updateStrategy/whereStrategy 会 覆盖全局策略,优先级更高。



The End.

http://www.dtcms.com/a/427328.html

相关文章:

  • 石家庄建设工程招标办网站成都网站推广公司
  • 【C#避坑实战系列文章16】性能优化(CPU / 内存占用过高问题解决)
  • JavaScript性能优化实战:从指标到落地的全链路方案
  • 上海网站优化加盟网站建设的公司开发
  • 网站怎么发布到服务器青岛不错的网站公司
  • linux0.11学习之启动主线要点(一)
  • Invoke-customs are only supported starting with Android O (--min-api 26)
  • 安卓基础组件014--button圆角 背景色 边框
  • 【Android】浅谈kotlin协程应用
  • 比价网站源码整站程序梦幻西游网页版app
  • dz做网站虚拟主机可以干什么
  • Windows10,11自带的Hyper-V虚拟机开启及使用方法
  • QCustomPlot 系列总结:从入门到精通的完整指南与资源整理
  • RK3566鸿蒙开发板规格书Purple Pi OH
  • 大模型落地深水区:企业 AI 转型的实践路径与价值突破
  • 金顺广州外贸网站建设图片模板网站
  • LinuxC++——etcd-cpp-api精简源代码函数参数查询参考
  • [特殊字符]️ Spring Cloud Eureka 三步通:搭建注册中心 + 服务注册 + 服务发现,通俗易懂!
  • 打工人日报#20250930
  • 六安网站建设网络服务中国都在那个网站上做外贸
  • 软件工程实践团队作业——团队组建与实践选题
  • YDWE编辑器系列教程二:物体编辑器
  • 软考-系统架构设计师 NoSQL数据库详细讲解
  • 钢铁厂设备健康监测系统:AIoT技术驱动的智慧运维革命​
  • Elasticsearch集群监控信息(亲测)
  • TARA (威胁分析与风险评估) 学习笔记
  • 网站集成微信登陆如何选择大良网站建设
  • 鸿蒙:使用Image组件展示相册图片或rawfile图片
  • ubuntu系统当前的时间和时区
  • 图解式部署:WSL2 中 Dify 本地化安装与访问故障排查指南