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
}

总结

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

相关文章

  • MyBatis中有关int和Integer的使用方式

    MyBatis中有关int和Integer的使用方式

    这篇文章主要介绍了MyBatis中有关int和Integer的使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • java实现系统捕获异常发送邮件案例

    java实现系统捕获异常发送邮件案例

    这篇文章主要为大家详细介绍了java实现系统捕获异常发送邮件案例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • springboot以FTP方式上传文件到远程服务器

    springboot以FTP方式上传文件到远程服务器

    这篇文章主要介绍了springboot以FTP方式上传文件到远程服务器,需要的朋友可以参考下
    2019-12-12
  • SpringBoot中统计方法耗时的七种实现方式小结

    SpringBoot中统计方法耗时的七种实现方式小结

    作为开发者,我们经常需要统计方法的执行时间,以便找出性能瓶颈,优化系统响应速度,今天分享在SpringBoot框架中实现方法耗时统计的几种方法,大家可以根据需求自行选择
    2025-03-03
  • SpringBoot @Cacheable自定义KeyGenerator方式

    SpringBoot @Cacheable自定义KeyGenerator方式

    这篇文章主要介绍了SpringBoot @Cacheable自定义KeyGenerator方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java策略模式实现简单购物车功能

    Java策略模式实现简单购物车功能

    这篇文章主要介绍了Java策略模式实现简单地购物车,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • 基于MyBatis的简单使用(推荐)

    基于MyBatis的简单使用(推荐)

    下面小编就为大家带来一篇基于MyBatis的简单使用(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Intellij IDEA 2020.3 配置教程详解

    Intellij IDEA 2020.3 配置教程详解

    这篇文章主要介绍了Intellij IDEA 2020.3 配置教程详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • java虚拟机内存溢出及泄漏实例

    java虚拟机内存溢出及泄漏实例

    本篇文章给大家分享了java虚拟机内存溢出及泄漏的实例以及相关知识点分享,有兴趣的朋友参考学习下。
    2018-06-06
  • SpringMVC的详细架构你了解嘛

    SpringMVC的详细架构你了解嘛

    这篇文章主要为大家介绍了SpringMVC的详细架构,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01

最新评论