Java之@TableField注解的用法解析

 更新时间:2025年01月26日 08:52:18   作者:孙 悟 空  
MyBatis-Plus的@TableField注解用于控制实体类字段与数据库表字段的映射关系,支持字段映射、忽略、插入和更新控制、自定义填充策略和类型转换等

Java @TableField注解用法

  • @TableField 是 MyBatis-Plus 中的一个注解,用于标识实体类字段与数据库表字段的映射关系。它可以用来控制某些字段在数据库操作中是否被映射、是否参与数据库的插入、更新等操作,或者设置字段在数据库中的实际名称。
  • @TableField 可以使得代码更加灵活,避免了与数据库字段名不一致时的麻烦,也使得字段的自动填充和映射控制更加精细。

常见的作用和用法

1.字段映射与数据库字段名不一致

如果实体类字段名与数据库表字段名不一致,可以使用 @TableField 注解来指定对应的数据库字段名。

public class User {
    @TableField("user_name")  // 数据库表中字段名为 user_name
    private String username;
}

2.忽略某个字段

如果某个字段不需要参与数据库操作(例如不需要插入或更新),可以使用 @TableField(exist = false) 来标记。

public class User {
    @TableField(exist = false)  // 表示该字段不映射到数据库
    private String temporaryField;
}

3.指定字段是否参与插入、更新操作

@TableField 可以与 insertupdate 属性一起使用,指定该字段在插入或更新时是否参与操作。

public class User {
    @TableField(fill = FieldFill.INSERT)  // 仅在插入时填充
    private Date createTime;

    @TableField(fill = FieldFill.INSERT_UPDATE)  // 在插入和更新时都填充
    private Date updateTime;
}

4.自定义填充策略

MyBatis-Plus 提供了自动填充的功能,可以通过 @TableField 注解的 fill 属性指定某些字段在插入或更新时由 MyBatis-Plus 自动填充,例如时间戳、创建者等。

@TableField(fill = FieldFill.INSERT)  // 在插入时自动填充
private Date createTime;

5.设置数据库字段的类型

@TableField 注解还可以设置数据库字段的类型,例如 typeHandler 属性可以指定自定义的类型处理器,用于特定的字段类型转换。

@TableField(typeHandler = MyCustomTypeHandler.class)
private String customField;

常用属性

  • value:数据库字段名(默认是实体类字段名)。
  • exist:是否映射到数据库,false 表示不映射,true 表示映射(默认值为 true)。
  • fill:字段填充策略,FieldFill.INSERTFieldFill.UPDATEFieldFill.INSERT_UPDATE,可以指定字段何时进行自动填充。
  • typeHandler:指定字段的类型处理器,用于自定义字段类型转换。

示例

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import java.util.Date;

@TableName("user")
public class User {

    private Long id;
    
    @TableField("user_name") // 映射数据库中的 "user_name" 字段
    private String username;
    
    @TableField(exist = false) // 不映射数据库中的字段
    private String temporaryField;
    
    @TableField(fill = FieldFill.INSERT) // 在插入时填充
    private Date createTime;
    
    @TableField(fill = FieldFill.INSERT_UPDATE) // 在插入和更新时填充
    private Date updateTime;

    // Getter and Setter methods
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 使用@DS轻松解决动态数据源的问题

    使用@DS轻松解决动态数据源的问题

    这篇文章主要介绍了使用@DS轻松解决动态数据源的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • JSR-107缓存规范介绍

    JSR-107缓存规范介绍

    JSR是Java Specification Requests的缩写,意思是Java规范提案,下面给大家介绍JSR-107缓存规范的相关知识,感兴趣的朋友一起看看吧
    2025-05-05
  • JAVA加密算法- 非对称加密算法(DH,RSA)的详细介绍

    JAVA加密算法- 非对称加密算法(DH,RSA)的详细介绍

    这篇文章主要介绍了JAVA加密算法- 非对称加密算法(DH,RSA),详细介绍了DH,RSA的用法和示例,需要的朋友可以了解一下。
    2016-11-11
  • SpringBoot如何获取Kafka的Topic列表

    SpringBoot如何获取Kafka的Topic列表

    这篇文章主要介绍了SpringBoot如何获取Kafka的Topic列表问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • Java9 集合工厂方法解析

    Java9 集合工厂方法解析

    这篇文章主要介绍了Java9 集合工厂方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 解决Eclipse/STS中出现Resource is out of sync with the file system的异常问题

    解决Eclipse/STS中出现Resource is out of sync with the file system

    今天小编就为大家分享一篇关于解决Eclipse/STS中出现Resource is out of sync with the file system的异常问题,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • java基础的详细了解第四天

    java基础的详细了解第四天

    这篇文章对Java编程语言的基础知识作了一个较为全面的汇总,在这里给大家分享一下。需要的朋友可以参考,希望能给你带来帮助
    2021-08-08
  • 简述Java中进程与线程的关系_动力节点Java学院整理

    简述Java中进程与线程的关系_动力节点Java学院整理

    在 Java 语言中,对进程和线程的封装,分别提供了 Process 和 Thread 相关的一些类。本文首先简单的介绍如何使用这些类来创建进程和线程
    2017-05-05
  • Java学习之线程同步与线程间通信详解

    Java学习之线程同步与线程间通信详解

    这篇文章主要为大家详细介绍了线程同步和线程之间的通信的相关知识,文中的示例代码讲解详细,对我们学习Java有一定的帮助,感兴趣的可以了解一下
    2022-12-12
  • RabbitMQ工作模式中的RPC通信模式详解

    RabbitMQ工作模式中的RPC通信模式详解

    在RabbitMQ中,RPC模式通过消息队列实现远程调用功能,这篇文章给大家介绍RabbitMQ工作模式之RPC通信模式,感兴趣的朋友一起看看吧
    2025-06-06

最新评论