Java之@TableField注解的用法解析
作者:孙 悟 空
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
可以与 insert
和 update
属性一起使用,指定该字段在插入或更新时是否参与操作。
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.INSERT
、FieldFill.UPDATE
、FieldFill.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 }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。