【MyBatis-Plus】@TableField详解

概念

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

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

value属性

        在学习半自动ORM框架MyBatis中,我们要么使用ResultMap或者在配置中使用驼峰命名规则来让数据库的字段和实体类的属性名对应。而在全自动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)
    private LocalDateTime createTime;

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

猜你喜欢

转载自blog.csdn.net/m0_65563175/article/details/129996614