精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Spring Boot 集成 Mybatis Plus 自動填充字段

開發 前端
阿里巴巴開發手冊中也有這樣的提示,如果對于這些公共字段可以進行統一處理,不需要每次進行插入或者更新操作的時候 set 一下,就可以提高開發效率,解放雙手。

 [[373675]]

本文轉載自微信公眾號「武培軒」,作者武培軒 。轉載本文請聯系武培軒公眾號。

一般在表設計的時候,都會在表中添加一些系統字段,比如 create_time、update_time等。

阿里巴巴開發手冊中也有這樣的提示,如果對于這些公共字段可以進行統一處理,不需要每次進行插入或者更新操作的時候 set 一下,就可以提高開發效率,解放雙手。

加入依賴

下面就通過 MyBatis Plus 來完成字段自動填充,首先加入 MyBatis Plus 依賴:

  1. <dependency> 
  2.     <groupId>com.baomidou</groupId> 
  3.     <artifactId>mybatis-plus-boot-starter</artifactId> 
  4.     <version>3.4.1</version> 
  5. </dependency> 

創建實體類,添加填充注解

創建一個實體類,然后在需要自動填充的屬性上加注解 @TableField(fill = FieldFill.INSERT)、@TableField(fill = FieldFill.INSERT_UPDATE) 等注解。

  1. @Data 
  2. @TableName("user"
  3. public class UserEntity extends BaseEntity { 
  4.     private static final long serialVersionUID = 1L; 
  5.     /** 
  6.      * 主鍵 
  7.      */ 
  8.     @TableId(value = "id", type = IdType.ASSIGN_ID) 
  9.     private Long id; 
  10.     /** 
  11.      * 姓名 
  12.      */ 
  13.     @TableField("name"
  14.     private String name
  15.     /** 
  16.      * 年齡 
  17.      */ 
  18.     @TableField("age"
  19.     private Integer age; 
  20.     /** 
  21.      * 郵件 
  22.      */ 
  23.     @TableField("email"
  24.     private String email; 
  25.     /** 
  26.      * 創建時間 
  27.      */ 
  28.     @TableField(value = "create_time", fill = FieldFill.INSERT
  29.     public Date createTime; 
  30.     /** 
  31.      * 修改時間 
  32.      */ 
  33.     @TableField(value = "modify_time", fill = FieldFill.INSERT_UPDATE) 
  34.     public Date modifyTime; 

其中 fill 屬性為字段自動填充策略,可選的參數如下所示:

  1. public enum FieldFill { 
  2.     /** 
  3.      * 默認不處理 
  4.      */ 
  5.     DEFAULT
  6.     /** 
  7.      * 插入填充字段 
  8.      */ 
  9.     INSERT
  10.     /** 
  11.      * 更新填充字段 
  12.      */ 
  13.     UPDATE
  14.     /** 
  15.      * 插入和更新填充字段 
  16.      */ 
  17.     INSERT_UPDATE 

就直接創建一個 Mapper,來便于測試:

  1. @Mapper 
  2. public interface UserMapper extends BaseMapper<UserEntity> { 

實現元對象處理器接口

MyBatis Plus 版本不同,實現方式可能會有些許不同,在 3.4.1 版本是實現 MetaObjectHandler 接口,低版本可能是繼承 MetaObjectHandler 抽象類,來實現對應的方法。

下面為實現插入和更新數據的字段填充邏輯,在插入對象時,對創建時間 createTime 和修改時間 modifyTime 字段自動填充為當前時間,在更新對象時,將修改時間 modifyTime 修改為最新時間。

  1. @Component 
  2. public class CommonMetaObjectHandler implements MetaObjectHandler { 
  3.     /** 
  4.      * 創建時間 
  5.      */ 
  6.     private static final String FIELD_SYS_CREATE_TIME = "createTime"
  7.     /** 
  8.      * 修改時間 
  9.      */ 
  10.     private static final String FIELD_SYS_MODIFIED_TIME = "modifyTime"
  11.  
  12.     /** 
  13.      * 插入元對象字段填充(用于插入時對公共字段的填充) 
  14.      * 
  15.      * @param metaObject 元對象 
  16.      */ 
  17.     @Override 
  18.     public void insertFill(MetaObject metaObject) { 
  19.         Date currentDate = new Date(); 
  20.         // 插入創建時間 
  21.         if (metaObject.hasSetter(FIELD_SYS_CREATE_TIME)) { 
  22.             this.strictInsertFill(metaObject, FIELD_SYS_CREATE_TIME, Date.class, currentDate); 
  23.         } 
  24.         // 同時設置修改時間為當前插入時間 
  25.         if (metaObject.hasSetter(FIELD_SYS_MODIFIED_TIME)) { 
  26.             this.strictUpdateFill(metaObject, FIELD_SYS_MODIFIED_TIME, Date.class, currentDate); 
  27.         } 
  28.     } 
  29.  
  30.     /** 
  31.      * 更新元對象字段填充(用于更新時對公共字段的填充) 
  32.      * 
  33.      * @param metaObject 元對象 
  34.      */ 
  35.     @Override 
  36.     public void updateFill(MetaObject metaObject) { 
  37.         this.setFieldValByName(FIELD_SYS_MODIFIED_TIME, new Date(), metaObject); 
  38.     } 

其中,默認填充策略為默認有值不覆蓋,如果提供的值為 null 也不填充。如果默認填充策略不滿足,可以重寫 strictFillStrategy 方法以滿足自己的需求。

測試字段自動填充

編寫測試類來檢驗是否在插入和更新操作時,是否會自動填充響應的字段。

  1. @Slf4j 
  2. @RunWith(SpringRunner.class) 
  3. @SpringBootTest 
  4. public class AutoFillTest { 
  5.     @Resource 
  6.     private UserMapper userMapper; 
  7.     @Test 
  8.     public void test() throws InterruptedException { 
  9.         UserEntity user = new UserEntity(); 
  10.         user.setName("wupx"); 
  11.         user.setAge(18); 
  12.         user.setEmail("wupx@qq.com"); 
  13.         userMapper.insert(user); 
  14.         Long id = user.getId(); 
  15.         UserEntity beforeUser = userMapper.selectById(id); 
  16.         log.info("before user:{}", beforeUser); 
  17.         Assert.assertNotNull(beforeUser.getCreateTime()); 
  18.         Assert.assertNotNull(beforeUser.getModifyTime()); 
  19.         beforeUser.setAge(19); 
  20.         Thread.sleep(1000L); 
  21.         userMapper.updateById(beforeUser); 
  22.         log.info("query user:{}", userMapper.selectById(id)); 
  23.         // 清除測試數據 
  24.         userMapper.deleteById(id); 
  25.     } 

啟動測試類,通過日志可以看出來:

  1. before user:UserEntity(id=1346071927831134210, name=wupx, age=18, email=wupx@qq.com, createTime=Mon Jan 04 20:32:11 CST 2021, modifyTime=Mon Jan 04 20:32:11 CST 2021) 
  2. query user:UserEntity(id=1346071927831134210, name=wupx, age=19, email=wupx@qq.com, createTime=Mon Jan 04 20:32:11 CST 2021, modifyTime=Mon Jan 04 20:32:13 CST 2021) 

第一次插入對象的時候,創建時間和修改時間都自動填充了,當修改對象的時候,修改時間也相應的進行了更新。

另外可以將公共字段封裝到公共類中,比如 BaseEntity:

  1. @Data 
  2. public class BaseEntity { 
  3.     /** 
  4.      * 主鍵 
  5.      */ 
  6.     @TableId(value = "id", type = IdType.ASSIGN_UUID) 
  7.     private Long id; 
  8.     /** 
  9.      * 創建時間 
  10.      */ 
  11.     @TableField(value = "create_time", fill = FieldFill.INSERT
  12.     private Date createTime; 
  13.     /** 
  14.      * 修改時間 
  15.      */ 
  16.     @TableField(value = "modify_time", fill = FieldFill.INSERT_UPDATE) 
  17.     private Date modifyTime; 

經過測試,也是可以完成公共字段的自動填充,大家也可以在項目中這樣搞下,可以減少每次插入或者更新時的 set 操作。

總結

本文的完整代碼在 https://github.com/wupeixuan/SpringBoot-Learn 的 mybatis-plus-auto-fill-metainfo 目錄下。

你有沒有經常需要去設置公共字段的煩惱呢,如果有這種情況,可以通過這種方式來解決下。

 

責任編輯:武曉燕 來源: 武培軒
相關推薦

2024-01-16 08:17:29

Mybatis驗證業務

2022-07-11 09:00:37

依賴配置文件Mybati

2023-03-13 07:35:44

MyBatis分庫分表

2025-05-26 03:20:00

SpringMyBatis數據權限

2024-07-31 09:56:20

2025-06-05 01:00:00

2023-02-15 09:34:20

公共字段mybatis變量

2023-12-13 12:20:36

SpringMySQL數據源

2021-09-08 10:23:08

讀寫分離Java數據庫

2018-11-02 15:45:41

Spring BootRedis數據庫

2020-07-14 11:00:12

Spring BootRedisJava

2024-12-20 16:49:15

MyBatis開發代碼

2021-08-06 08:04:14

Spring Boot自動配置

2023-01-10 07:52:15

2020-09-02 17:28:26

Spring Boot Redis集成

2019-12-03 11:00:08

spring bootspring-kafkJava

2017-03-23 09:29:06

2024-12-25 16:01:01

2020-12-31 07:55:33

spring bootMybatis數據庫
點贊
收藏

51CTO技術棧公眾號

国产91精品久久久久久久| 91精品国产一区二区三区| 欧美国产一区二区在线| 中国黄色一级视频| 亚洲大黄网站| 中文字幕日韩精品在线观看| 色哟哟网站在线观看| 校园春色亚洲色图| 亚洲综合无码一区二区| 日本免费高清一区二区| www久久久久久| 黄色网址在线免费看| 久久国产免费视频| 免费高清视频在线一区| 一区二区三区美女| 午夜精品一区二区三区四区| 欧美 日韩 中文字幕| 精品一区二区三区在线播放| 4438全国亚洲精品在线观看视频| 欧美日韩黄色网| 成人情趣视频| 亚洲美女性视频| 黄色激情在线观看| 国产视频一区二区在线播放| 在线亚洲一区观看| av在线播放亚洲| 成人免费网址| 欧美精彩视频一区二区三区| 精品1区2区| 国产黄色片网站| 狠狠网亚洲精品| 国产极品精品在线观看| 日韩特级黄色片| 亚洲大胆av| 欧美精品国产精品日韩精品| 婷婷激情四射网| 97精品国产福利一区二区三区| 亚洲天堂影视av| 亚洲AV无码国产精品| 999久久久精品一区二区| 制服丝袜成人动漫| www.久久久久久久久久久| 日韩一级二级 | 中文字幕一区二区三区乱码| 国产日本在线视频| 久久久久久久国产精品影院| 久久99精品久久久久久久青青日本| 亚洲国产精品成人久久蜜臀| 国产成人精品一区二区三区网站观看| 成人黄色在线免费| 国产有码在线观看| 国产麻豆9l精品三级站| 51精品国产人成在线观看| 99久久精品国产色欲| 国产精品性做久久久久久| 99久久99| 日韩中文字幕免费观看| 成人av在线资源网站| 国产亚洲精品美女久久久m| 国产 日韩 欧美 综合| 成人一区二区三区视频| 国产伦精品一区二区三区四区免费 | 欧美日韩午夜视频| 在线精品视频在线观看高清| 久久69精品久久久久久国产越南| 国产一级理论片| 国产日韩欧美三区| 国产成人拍精品视频午夜网站| 中国一级片黄色一级片黄| 久久av中文字幕片| www.成人av.com| 色播色播色播色播色播在线| 国产色产综合产在线视频| 一卡二卡3卡四卡高清精品视频| 久久国产精品一区| 亚洲mv在线观看| 黑鬼大战白妞高潮喷白浆| 成人精品三级| 欧美一二三区在线观看| www.17c.com喷水少妇| 杨幂一区二区三区免费看视频| 亚洲一区二区精品| 全网免费在线播放视频入口 | 欧美精品福利视频| 欧美人一级淫片a免费播放| 精品亚洲成a人在线观看| 国产99在线免费| a√资源在线| 亚洲自拍偷拍图区| 美女网站免费观看视频| 久久在线观看| 亚洲欧美日韩一区在线| 青花影视在线观看免费高清| 在线一区欧美| 91影院在线免费观看视频| 无码精品视频一区二区三区| 国产精品女主播av| 青青草精品视频在线| 成人h在线观看| 亚洲成年人影院在线| 少妇愉情理伦三级| 亚洲免费成人| 亚洲影院在线看| 国产资源在线看| 亚洲成人自拍偷拍| 婷婷中文字幕在线观看| 亚洲区小说区图片区qvod| 九九热精品在线| 中文字字幕在线中文乱码| 成人av在线影院| 99精品一区二区三区的区别| 波多视频一区| 精品电影一区二区三区| 国产天堂av在线| 久久亚洲综合| 久久国产主播精品| 色爱综合区网| 欧美日韩大陆一区二区| 美女久久久久久久久久| 精品福利av| 亚洲r级在线观看| av电影在线网| 欧美在线你懂得| 狠狠人妻久久久久久综合蜜桃| 你懂的视频一区二区| 国产日本欧美一区二区三区| 激情综合闲人网| 欧美日韩人人澡狠狠躁视频| 国产污在线观看| 欧美va天堂在线| 91中文字幕在线| 国产素人视频在线观看| 精品视频999| 国产不卡在线观看视频| 久热re这里精品视频在线6| 久久av免费观看| 91资源在线观看| 欧美精品一区视频| 久久久精品视频在线| 国产suv精品一区二区6| 美女在线免费视频| 日本在线成人| 欧美日韩第一视频| 你懂的网站在线| 亚洲香肠在线观看| 中文字幕一区三区久久女搜查官| 韩国在线一区| 久久综合福利| 男人皇宫亚洲男人2020| 亚洲天堂精品在线| 午夜视频网站在线观看| 国产精品久久久久久久第一福利| 黄大色黄女片18第一次| 亚洲成av人电影| 成人av男人的天堂| а√天堂8资源中文在线| 亚洲精品国产拍免费91在线| 久久久成人免费视频| 久久精品夜夜夜夜久久| 色播五月激情五月| 伊人情人综合网| 国产日韩欧美亚洲一区| 亚洲女同志freevdieo| 国产一区二区三区在线免费观看| 最近中文字幕在线观看| 亚洲丝袜美腿综合| 91精品又粗又猛又爽| 亚洲一区久久| 中文字幕成人一区| 8848成人影院| 国产成人精品999| 日本视频在线观看| 欧美精品一区二区三区蜜桃视频| 欧美精品亚洲精品日韩精品| 久久精品欧美一区二区三区不卡 | 日韩中文字幕免费在线| 欧美国产美女| 国产乱码一区| 成人18视频在线观看| 久99九色视频在线观看| 久香视频在线观看| 日韩三级免费观看| 久久久蜜桃一区二区| 国产精品大尺度| 中文字幕第3页| 久久国产人妖系列| 婷婷五月综合缴情在线视频| 欧美岛国激情| 国产伦精品一区二区三区照片| www成人在线视频| 久久久久久久久久婷婷| 第三区美女视频在线| 精品国产制服丝袜高跟| 免费av中文字幕| 亚洲国产精品久久艾草纯爱| 欧美性受xxxx黑人| 99久久伊人精品| 天天综合天天添夜夜添狠狠添| 亚洲免费大片| 国产日韩欧美大片| 精品午夜久久| 精品一区国产| 精品中文视频| 国产免费一区二区三区在线观看 | 色综合天天综合网天天狠天天| 手机在线免费看毛片| 久久精品夜色噜噜亚洲aⅴ| 久久性爱视频网站| 国产在线不卡视频| 中文字幕永久有效| 天堂在线一区二区| 777777av| 欧美视频一区| 亚洲AV无码成人精品一区| 美女网站一区| 狠狠色综合网站久久久久久久| 精品国产欧美| 成人黄色av网| 欧美天堂一区| 国产成人精品一区| 中老年在线免费视频| 777午夜精品福利在线观看| 色综合999| 欧美成年人视频网站欧美| yourporn在线观看视频| 亚洲人成在线免费观看| 五月天婷婷在线播放| 欧美xxxx在线观看| www.com在线观看| 欧美福利一区二区| 亚洲字幕av一区二区三区四区| 在线亚洲精品福利网址导航| 香蕉影院在线观看| 狠狠久久亚洲欧美专区| 日韩av片在线播放| 亚洲国产精品视频| 日韩成人在线免费视频| 亚洲国产欧美在线| 久草视频精品在线| 亚洲国产成人精品视频| 日韩字幕在线观看| 亚洲成av人片一区二区三区| 日本一级黄色录像| 五月婷婷综合网| 中日韩精品视频在线观看| 午夜天堂影视香蕉久久| 九一国产在线观看| 一本色道亚洲精品aⅴ| 欧美超碰在线观看| 色94色欧美sute亚洲线路一久| 销魂美女一区二区| 欧美日韩成人一区二区| 国产精品乱码一区二区| 日韩精品影音先锋| 污污的视频网站在线观看| 日韩国产中文字幕| 国产三级视频在线看| 最近2019中文字幕第三页视频| 毛片在线播放a| 久久久久久国产| 台湾佬中文娱乐网欧美电影| 日韩av免费在线看| 日韩av黄色| 97se视频在线观看| 日韩高清电影免费| 天堂社区 天堂综合网 天堂资源最新版| 日韩精品久久久久久久电影99爱| 一区视频二区视频| 亚洲黄色影院| 亚洲欧美另类动漫| 国产成人日日夜夜| 日韩av在线看免费观看| 最近日韩中文字幕| 福利一区二区三区四区| 一本色道综合亚洲| av观看在线免费| 亚洲精品乱码久久久久久金桔影视| 久热av在线| 欧美成人自拍视频| 成人美女黄网站| 91在线网站视频| 最新国产一区| 亚洲欧美一二三| 久久精品主播| 精品人妻人人做人人爽夜夜爽| 91老司机福利 在线| 大地资源高清在线视频观看| 香蕉av福利精品导航| 亚洲系列在线观看| 亚洲第一区中文99精品| 日本三级在线视频| 欧美在线免费观看| 日本免费精品| 亚洲一区精彩视频| 国产亚洲福利| 欧美一级大片免费看| 中文一区在线播放| 久久免费激情视频| 欧美大片一区二区| 1pondo在线播放免费| 69av在线视频| 伊人www22综合色| 亚洲视频小说| 久久五月激情| 中文字幕影片免费在线观看| 自拍视频在线观看一区二区| 看黄色一级大片| 亚洲精品视频在线观看视频| 中文在线观看免费| 国产热re99久久6国产精品| 国产区精品区| 久久成人免费观看| 成人性色生活片免费看爆迷你毛片| 精品少妇一区二区三区密爱| 在线视频你懂得一区二区三区| 色呦呦视频在线| 欧美黄色免费网站| 蜜桃在线一区| 精品国产三级a∨在线| 蜜桃一区二区三区在线| 亚洲国产欧美视频| 天天综合色天天| 日本激情一区二区| 欧美激情一二区| 日韩中文字幕无砖| 天天操天天干天天玩| 九色|91porny| 999精品视频在线观看播放| 欧美色网站导航| 国产日本在线视频| 国产成人综合久久| 欧美美女在线观看| 能在线观看的av网站| 久久亚洲综合色一区二区三区| 亚洲 欧美 视频| 日韩精品极品毛片系列视频| 麻豆视频在线看| 久久精品美女| 天堂资源在线中文精品| 国产美女免费网站| 欧美视频精品在线观看| 淫片在线观看| 91亚洲精品视频| 欧美视频在线观看| 国产精品久久无码| 精品美女久久久久久免费| 男人久久精品| 国产精品入口福利| 91精品一区二区三区综合在线爱| 色姑娘综合天天| 一级女性全黄久久生活片免费| 乱色精品无码一区二区国产盗| 97视频在线观看视频免费视频| 日本福利一区| 成人中文字幕av| 中文字幕视频一区二区三区久| 国产色在线视频| 欧美高跟鞋交xxxxhd| 久久aimee| 一区二区xxx| 亚洲精品欧美二区三区中文字幕| aaa一区二区| 88国产精品欧美一区二区三区| 国际精品欧美精品| 国产美女视频免费看| 亚洲综合av网| 国产三级在线| eeuss一区二区三区| 久久动漫亚洲| 情侣偷拍对白清晰饥渴难耐| 日韩欧美中文一区| 亚洲同志男男gay1069网站| 亚洲欧美日韩另类精品一区二区三区 | 无码精品黑人一区二区三区| 国产精品国产亚洲伊人久久 | 亚洲国产美国国产综合一区二区 | 精品国偷自产在线视频99| 日本一区二区三区播放| 国产一区二区三区精彩视频| 国产精品久久久久久久久图文区| 蜜臀久久99精品久久久| 国产成人一区二区三区| 欧美精品大片| 国产免费一区二区三区网站免费| 在线不卡免费av| 日韩电影免费看| 日韩欧美一级在线| 久久先锋影音av| 精品久久久久成人码免费动漫| 欧美在线视频一区| 欧美区亚洲区| 亚洲国产av一区| 日韩欧美国产成人一区二区| 国模一区二区| 亚洲熟妇av日韩熟妇在线| 中文字幕永久在线不卡| 瑟瑟在线观看| 国产精品国产一区二区 | 成人一区二区电影| 香蕉国产精品偷在线观看不卡|