【MyBatis-Plus】@TableField详解

概念

        这是MyBatis-Plus框架中的一个注解,用于实体类的属性上,此注解的方法有以下内容,

针对以下十四种属性,这里主要说明其常用到的三种属性。

value属性

        在学习半自动ORM框架MyBatis中,我们要么使用Mapper文件中的ResultMap或者在配置中使用驼峰命名规则(map-underscore-to-camel-case)来让数据库的字段和实体类的属性名对应。而在全自动ORM框架的MyBatis-Plus中就是使用value属性来完成这项操作的。(注:忘了的可以看我之前整理的MyBatis框架笔记:SpringBoot结合MyBatis 【超详细】_springboot mybatis_小白的救赎的博客-CSDN博客

public class User{
    @TableField("user_name")
    private String username;
}

exist属性

        用这个属性表示该实体类的常量在数据库中不存在。否则会导致加载出问题:数据库字段与实体类属性不匹配。

public class User{
    @TableField(exist = false)
    private Double distance;
}

fill属性

        这个就很重要了,在项目中经常会遇到一些数据,每次都使用相同的方式填充,例如:记录的创建时间、更新时间等。我们可以使用MyBatis-Plus的自动填充功能,完成这些字段的赋值工作。在《阿里巴巴的开发手册》中建议每个数据库表必须有create_time和update_time字段,于是我们可以使用这个自动填充的功能维护这两个字段。

        这里做一个知识点的补充:后端的实体类属性咋都用LocalDateTime而不是Date?

1、java.util.Date的大多数方法已经过时

2、java.util.Date的输出可读性差

3、java.util.Date对应的格式化类SimpleDateFormat是线程不安全的类

4、LocalDateTime对应的格式化类DateTimeFormatter是线程安全的类

在创建数据库表的情况下,我们可以用以下的建表语句去创建create_time和update_time字段。

-- timestamp表示时间戳
-- DEFAULT CURRENT_TIMESTAMP表示当插入数据的时候,该字段默认值为当前时间
-- ON UPDATE CURRENT_TIMESTAMP表示每次更新这条数据的时候,该字段都会更新成当前时间
CREATE TABLE `表名`(
    ....
    `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
);

在后端实体类属性中的字段使用方式如下:

public class User{
    ...
    @TablieField(value = "create_time",fill = FieldFill.INSERT)
    // 如需格式化传给前端还需要使用以下注解
    // 此注解是防止数据库中的日期为yyyy-MM-ddTHH:mm:ss 其中T就是空格
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    @TablieField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
@TableFieldMyBatis-Plus框架中的注解,用于标识实体类中的字段与数据库表中的字段的映射关系。它提供了一些属性来控制字段的行为。 1. updateStrategy属性:用于控制在执行update操作时,是否将字段的值设置为NULL。默认情况下,updateStrategy属性的值为FieldStrategy.NOT_NULL,表示字段不能为空。如果想要将字段的值设置为NULL,可以将updateStrategy属性的值设置为FieldStrategy.IGNORED。例如: ```java @TableField(updateStrategy = FieldStrategy.IGNORED) private Integer disposalMode; ``` 2. insertStrategy属性:用于控制在执行insert操作时,是否将字段的值设置为NULL。默认情况下,insertStrategy属性的值为FieldStrategy.NOT_NULL,表示字段不能为空。如果想要将字段的值设置为NULL,可以将insertStrategy属性的值设置为FieldStrategy.IGNORED。例如: ```java @TableField(insertStrategy = FieldStrategy.IGNORED) private Integer disposalMode; ``` 3. exist属性:用于控制在执行insert操作时,是否需要将字段插入到数据库表中。默认情况下,exist属性的值为true,表示字段需要插入到数据库表中。如果不需要将字段插入到数据库表中,可以将exist属性的值设置为false。例如: ```java @TableField(exist = false) private Integer disposalMode; ``` 通过使用@TableField注解及其属性,可以灵活地控制实体类字段与数据库表字段的映射关系及其行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值