Skip to content

@TableField 注解

表ID主键注解,可以重复注解(同时适配各种数据库)

属性说明

属性是否可空默认值说明
value列名
selecttrue是否查询,select(实体类.class)时生效
inserttrue是否修改,save(实体类)时生效
updatetrue是否修改,update(实体类)时生效
jdbcType和 mybatis JdbcType 一样
typeHandler和 mybatis TypeHandler 一样
defaultValue新增默认值,save时生效,可静态,可动态:例如时间 "{NOW}"
updateDefaultValue修改默认值,update时生效,可静态,可动态:例如时间 "{NOW}"

使用示例

java
@Table
@Data
public class DefaultValueTest {

    @TableId
    @TableId(dbType = DbType.ORACLE, value = IdAutoType.SQL, sql = "select default_value_test_seq.NEXTVAL FROM dual")
    private Integer id;
    
    //可省略
    private String value1;

    @TableField(defaultValue = "1", updateDefaultValue = "2")
    private Integer value2;

    @TableField(defaultValue = "{NOW}")
    private LocalDateTime createTime;

    @TableField("enum")
    private TestEnum value3;
}

列名符合驼峰模式的,无需填写 列名

框架自带动态默认值有哪些?

类型说明
{BLANK}空字符串
{NOW}当前时间,可应用在 LocalDateTime,LocalDate,Date,Long,Integer 字段上

如何自定义自己的动态默认值

在项目启动执行

MybatisMpConfig.setDefaultValue("{NOW}", (type) -> {
    if (type == LocalDateTime.class) {
        return LocalDateTime.now();
    } else if (type == LocalDate.class) {
        return LocalDate.now();
    } else if (type == Date.class) {
        return new Date();
    } else if (type == Long.class) {
        return System.currentTimeMillis();
    } else if (type == Integer.class) {
        return (int) (System.currentTimeMillis() / 1000);
    }
    throw new RuntimeException("Inconsistent types");
});