W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
原理:
com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
?@TableField(.. fill = FieldFill.INSERT)
? 生成器策略部分也可以配置!public class User {
// 注意!這里需要標(biāo)記為填充字段
@TableField(.. fill = FieldFill.INSERT)
private String fillField;
....
}
MyMetaObjectHandler
?@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill ....");
this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推薦使用)
// 或者
this.strictInsertFill(metaObject, "createTime", () -> LocalDateTime.now(), LocalDateTime.class); // 起始版本 3.3.3(推薦)
// 或者
this.fillStrategy(metaObject, "createTime", LocalDateTime.now()); // 也可以使用(3.3.0 該方法有bug)
}
@Override
public void updateFill(MetaObject metaObject) {
log.info("start update fill ....");
this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推薦)
// 或者
this.strictUpdateFill(metaObject, "updateTime", () -> LocalDateTime.now(), LocalDateTime.class); // 起始版本 3.3.3(推薦)
// 或者
this.fillStrategy(metaObject, "updateTime", LocalDateTime.now()); // 也可以使用(3.3.0 該方法有bug)
}
}
注意事項(xiàng):
entity
的屬性設(shè)置值!!!
null
MetaObjectHandler
提供的默認(rèn)方法的策略均為:如果屬性有值則不覆蓋,如果填充值為?null
則不填充
TableField
?注解,屬性fill選擇對(duì)應(yīng)策略,該聲明告知Mybatis-Plus需要預(yù)留注入SQL字段
MyMetaObjectHandler
?在 Spring Boot 中需要聲明?@Component
?或?@Bean
?注入
FieldFill.xxx
?和字段名以及字段類型來(lái)區(qū)分必須使用父類的?strictInsertFill
?或者?strictUpdateFill
?方法
fillStrategy
?方法
update(T t,Wrapper updateWrapper)
?時(shí)?t
?不能為空,否則自動(dòng)填充失效public enum FieldFill {
/**
* 默認(rèn)不處理
*/
DEFAULT,
/**
* 插入填充字段
*/
INSERT,
/**
* 更新填充字段
*/
UPDATE,
/**
* 插入和更新填充字段
*/
INSERT_UPDATE
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: