@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}" |
使用示例
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");
});