一、自定義id生成器
註解類型
IdType中類型 |
描述 |
AUTO(0) |
數據庫自增 依賴數據庫 |
NONE(1) |
表示該類型未指定主鍵類型 (如果沒有主鍵策略)默認根據雪花算法生成 |
INPUT(2) |
用戶輸入ID(該類型可以通過自己註冊填充插件進行填充) |
ASSIGN_ID(3) |
支持自動轉換爲String類型,但數值類型不支持自動轉換,需精準匹配,例如返回Long,實體主鍵就不支持定義爲Integer |
ASSIGN_UUID(4) |
默認不含中劃線的UUID生成 |
實體類註解
@TableId(type = IdType.ASSIGN_ID)
private Long id;
測試
userMapper.insert(new User().setName("小明").setAge(23).setEmail("[email protected]").setVersion(1));
二、自動填充功能
- 需求:新增時createTime插入當前時間,修改時updateTime插入當前時間。
配置類
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime", new Date(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime", new Date(), metaObject);
}
}
實體類註解
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.UPDATE)
private Date updateTime;
測試
userMapper.insert(new User().setName("小明").setAge(23).setEmail("[email protected]").setVersion(1));
三、字段類型處理器
1.添加對應依賴
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.10.1</version>
</dependency>
2.實體類註解
@TableField(typeHandler = JacksonTypeHandler.class)
private OtherInfo otherInfo;
3.測試
@Test
public void testType() {
userMapper.insert(new User()
.setName("小明")
.setAge(23)
.setEmail("[email protected]")
.setVersion(1)
.setOtherInfo(new OtherInfo().setPhone(13556688888L).setAddress("山東")));
}