Mybatis-Plus自動(dòng)填充的實(shí)現(xiàn)示例
在常用業(yè)務(wù)中有些屬性需要配置一些默認(rèn)值,MyBatis-Plus提供了實(shí)現(xiàn)此功能的插件。在這里修改user表添加 create_time 字段和 update_time 字段,在User類中添加對(duì)應(yīng)屬性。
1、為需要自動(dòng)填充的屬性添加注解 @TableField
提供了4種自動(dòng)填充策略:DEFAULT,默認(rèn)不處理。INSERT,插入填充字段。UPDATE,更新填充字段。INSERT_UPDATE,插入和更新填充字段。
@Data public class User { private Long id; private String name; private Integer age; private String email; @TableField(fill = FieldFill.INSERT) private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime; }
2、實(shí)現(xiàn)字段填充控制器,編寫自定義填充規(guī)則
實(shí)現(xiàn) MetaObjectHandler 接口,實(shí)現(xiàn) insertFill 和 updateFill 方法,此處的 create_time 和update_time字段需要插入時(shí)填充值, 只有 update_time 字段在修改時(shí)需要填充,所以策略如下。
//需要將自定義填充控制器注冊(cè)為組件 @Component public class MyMetaObjectHandler implements MetaObjectHandler { private static final Logger LOGGER= LoggerFactory.getLogger(MyMetaObjectHandler.class); //insert操作時(shí)要填充的字段 @Override public void insertFill(MetaObject metaObject) { LOGGER.info("start insert fill ..."); //根據(jù)屬性名字設(shè)置要填充的值 this.setFieldValByName("createTime",new Date(),metaObject); this.setFieldValByName("updateTime",new Date(),metaObject); } //update操作時(shí)要填充的字段 @Override public void updateFill(MetaObject metaObject) { LOGGER.info("start insert fill ..."); this.setFieldValByName("updateTime",new Date(),metaObject); } }
3、插入數(shù)據(jù)測(cè)試
@RunWith(SpringRunner.class) @SpringBootTest public class CRUDTest { @Autowired private UserMapper userMapper; @Test public void testInsert(){ User user = new User(); user.setName("jack11"); user.setAge(20); user.setEmail("4849111@qq.com"); int result= userMapper.insert(user); System.out.println(result); System.out.println(user); } }
4、修改數(shù)據(jù)測(cè)試
@Test public void testUpdate(){ User user = new User(); user.setId(2L); user.setName("Jackie"); int result = userMapper.updateById(user); System.out.println(result); }
一次插入數(shù)據(jù)后,create_time和update_time都被填充了設(shè)置的時(shí)間,做update操作后只有update_time的進(jìn)行了填充修改。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 關(guān)于mybatis-plus邏輯刪除自動(dòng)填充更新時(shí)間的問題
- mybatis-plus 新增/修改如何實(shí)現(xiàn)自動(dòng)填充指定字段
- Mybatis-plus自動(dòng)填充不生效或自動(dòng)填充數(shù)據(jù)為null原因及解決方案
- 實(shí)例詳解MyBatis-plus自動(dòng)填充功能
- MyBatis-Plus自動(dòng)填充功能失效導(dǎo)致的原因及解決
- mybatis-plus主鍵id生成、字段自動(dòng)填充的實(shí)現(xiàn)代碼
- mybatis-plus的自動(dòng)填充時(shí)間的問題(添加到數(shù)據(jù)庫的時(shí)間比當(dāng)前時(shí)間多4個(gè)小時(shí))
- MyBatis-Plus中自動(dòng)填充功能的用法示例詳解
相關(guān)文章
IDEA找不到database圖標(biāo)的簡單圖文解決方法
idea是一個(gè)功能十分強(qiáng)大的IDE,大家在使用他進(jìn)行開發(fā)時(shí)候,必不可少的就是連接數(shù)據(jù)庫了,這篇文章主要給大家介紹了關(guān)于IDEA找不到database圖標(biāo)的解決方法,需要的朋友可以參考下2024-07-07解決JDBC連接Mysql長時(shí)間無動(dòng)作連接失效的問題
這篇文章主要介紹了解決JDBC連接Mysql長時(shí)間無動(dòng)作連接失效的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03Dwr3.0純注解(純Java Code配置)配置與應(yīng)用淺析二之前端調(diào)用后端
我們講到了后端純Java Code的Dwr3配置,完全去掉了dwr.xml配置文件,但是對(duì)于使用注解的類卻沒有使用包掃描,而是在Servlet初始化參數(shù)的classes里面加入了我們的Service組件的聲明暴露,對(duì)于這個(gè)問題需要后面我們?cè)偌?xì)細(xì)研究下這篇文章,主要分析介紹前端怎么直接調(diào)用后端2016-04-04解決mapstruct在eclipse生成不了mapper的實(shí)現(xiàn)類問題
這篇文章主要介紹了解決mapstruct在eclipse生成不了mapper的實(shí)現(xiàn)類問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11Java實(shí)現(xiàn)簡易版聯(lián)網(wǎng)坦克對(duì)戰(zhàn)小游戲(附源碼)
這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)簡易版聯(lián)網(wǎng)坦克對(duì)戰(zhàn)小游戲的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04java中Calendar與Date類型互相轉(zhuǎn)換的方法
這篇文章主要介紹了java中Calendar與Date類型互相轉(zhuǎn)換的方法,Calendar與Date類型是我們?nèi)粘i_發(fā)中常用的兩種數(shù)據(jù)類型,它們用于不同的場(chǎng)景,兩者具有不同的方法,接下來通過實(shí)例給大家詳解,需要的朋友可以參考下2022-09-09淺談Java中OutOfMemoryError問題產(chǎn)生原因
本文主要介紹了淺談Java中OutOfMemoryError問題產(chǎn)生原因,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06