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

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
}

http://www.kler.cn/a/510216.html

相关文章:

  • 2,Linux文件基本属性(基于Ubuntu示例进行讲解)
  • MySQL HASH索引详解
  • python爬虫报错日记
  • 浙江安吉成新照明电器:Acrel-1000DP 分布式光伏监控系统应用探索
  • 网络功能虚拟化(NFV):网络设备也能虚拟成产品
  • MongoDB 学习指南与资料分享
  • HTTPS与HTTP:区别及安全性对比
  • Linux:指令大全(一)
  • Ubuntu把应用程序放到桌面
  • FastAPI 应用的容器化与 Docker 部署:提升性能与可扩展性
  • Java 静态导入:规则、实践与应用场景
  • 2,Linux文件基本属性(基于Ubuntu示例进行讲解)
  • 802.1协议讲解
  • leetcode刷题记录(六十八)——2. 两数相加
  • OpenAI第一个真正意义上的AI Agent:ChatGPT Tasks,使用指南1.0
  • latin1_swedish_ci(latin1 不支持存储中文、日文、韩文等多字节字符)
  • Shell控监Kafka积压
  • 210. 课程表 II【 力扣(LeetCode) 】
  • 【git】如何删除本地分支和远程分支?
  • Gateway与WebFlux
  • docker容器中运行了一个Ubuntu系统,如何把主机的一个文件拷贝到这个Ubuntu系统中
  • python json.dump 插入到json文件中,中文乱码问题
  • MCU中的LSB、MSB和大端模式、小端模式
  • Spring Boot+Vue
  • node.js项目依赖关系分析工具 Depazer 的使用
  • C# winodw TableLayoutPanel 料盒生产状态UI自动生成