@TableField 注解 
表ID主键注解,可以重复注解(同时适配各种数据库)
属性说明 
| 属性 | 是否可空 | 默认值 | 说明 | 
|---|---|---|---|
| value | 是 | 列名 | |
| select | 是 | true | 是否查询,select(实体类.class)时生效 | 
| insert | 是 | true | 是否修改,save(实体类)时生效 | 
| update | 是 | true | 是否修改,update(实体类)时生效 | 
| jdbcType | 是 | 和 mybatis JdbcType 一样 | |
| typeHandler | 是 | 和 mybatis TypeHandler 一样 | |
| defaultValue | 是 | 新增默认值,save时生效,可静态,可动态:例如时间 "{NOW}" | |
| updateDefaultValue | 是 | 修改默认值,update时生效,可静态,可动态:例如时间 "{NOW}" | |
| defaultValueFillAlways | 是 | false | 插入默认值是否总是填充,开启则不管有没有值都是填充 | 
| updateDefaultValueFillAlways | 是 | false | 修改默认值 是否总是填充,开启则不管有没有值都是填充 | 
使用示例 
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 字段上 | 
如何自定义自己的动态默认值 
在项目启动执行,entity 是 实体类的class,type是字段的类型
XbatisGlobalConfig.setDynamicValue("{NOW}", (entity,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");
});