一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - MybatisPlus 插入或更新數(shù)據(jù)時自動填充更新數(shù)據(jù)解決方案

MybatisPlus 插入或更新數(shù)據(jù)時自動填充更新數(shù)據(jù)解決方案

2022-01-17 12:12Starzkg Java教程

本文主要介紹了MybatisPlus 插入或更新數(shù)據(jù)時自動填充更新數(shù)據(jù)解決方案,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

Maven

?
1
2
3
4
5
6
7
8
9
10
11
12
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.6.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
 
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.1.0</version>
</dependency>

解決方案

1、 實(shí)體類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
 * 基礎(chǔ)Bean
 */
@Data
public class BaseEntity implements Serializable {
 
    @TableField(value = "create_user", fill = FieldFill.INSERT) // 新增執(zhí)行
    private String createUser;
 
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;
 
    @TableField(value = "update_user", fill = FieldFill.INSERT_UPDATE) // 新增和更新執(zhí)行
    private String updateUser;
 
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
 
    @TableField(value = "remark")
    private String remark;
 
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@Data
@TableName("sys_dept")
public class SysDeptEntity extends BaseEntity {
 
    private static final long serialVersionUID = 1L;
 
    /**
     * 部門ID
     **/
    @TableId
    private Long deptId;
 
    /**
     * 部門父節(jié)點(diǎn)ID
     **/
    private Long parentId;
 
    /**
     * 部門名稱
     **/
    private String deptName;
 
    /**
     * 顯示順序
     **/
    private Integer orderNum;
 
    /**
     * 用戶狀態(tài)(0:正常 1:禁用)
     **/
    private Integer status;
 
    @TableField(exist = false)
    private List<SysDeptEntity> children;
 
}

 2、攔截器MetaObjectHandler

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/**
 * @author ShenTuZhiGang
 * @version 1.0.0
 * @date 2020-11-26 15:52
 */
@Slf4j
@Component
public class CustomMetaObjectHandler implements MetaObjectHandler {
    @Autowired
    private AuthenticationTrustResolver authenticationTrustResolver;
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("come to insert fill .........");
        this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
        this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
        if(!authenticationTrustResolver.isAnonymous(authentication) && authentication!=null){
            AuthenticationUser user = (AuthenticationUser) authentication.getPrincipal();
            this.setFieldValByName("createUser", user.getUsername(), metaObject);
            this.setFieldValByName("updateUser",  user.getUsername(), metaObject);
        }else{
            this.setFieldValByName("createUser", "unknown", metaObject);
            this.setFieldValByName("updateUser""unknown", metaObject);
        }
 
    }
 
    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("come to update fill .........");
        this.setFieldValByName("update_time", LocalDateTime.now(), metaObject);
        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
        if(!authenticationTrustResolver.isAnonymous(authentication) && authentication!=null){
            AuthenticationUser user = (AuthenticationUser) authentication.getPrincipal();
            this.setFieldValByName("updateUser",  user.getUsername(), metaObject);
        }else{
            this.setFieldValByName("updateUser""unknown", metaObject);
        }
    }
}

不需要以下代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Configuration
public class MyBatisPlusConfig {
 
    /**
     * 自動填充功能
     * @return
     */
    @Bean
    public GlobalConfig globalConfig() {
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setMetaObjectHandler(new MetaHandler());
        return globalConfig;
    }
 
}

 3、測試

?
1
2
3
4
5
6
7
8
@RequiresPermissions("sys:dept:add")
@PostMapping("/add")
@ResponseBody
public R add(@RequestBody SysDeptEntity deptEntity) {
    logger.info("添加信息={}", deptEntity);
    sysDeptService.save(deptEntity); // 不再需要設(shè)置setCreateUser、setCreateTime、setUpdateUser、setUpdateTime操作,代碼更優(yōu)美
    return R.ok();
}

參考文章

使用MyBatis Plus自動添加數(shù)據(jù)庫表中的創(chuàng)建時間、創(chuàng)建者、更新時間、更新者

mybatisPlus自動填充更新時間

mybatis-plus實(shí)戰(zhàn)-時間字段自動更新

使用mybatis plus插入或更新數(shù)據(jù)時mysql表的添加時間和更新時間字段沒有更新(mybatis plus坑之一)

到此這篇關(guān)于MybatisPlus 插入或更新數(shù)據(jù)時自動填充更新數(shù)據(jù)解決方案的文章就介紹到這了,更多相關(guān)MybatisPlus 插入或更新自動填充內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/weixin_43272781/article/details/110198852

延伸 · 閱讀

精彩推薦
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程20個非常實(shí)用的Java程序代碼片段

    20個非常實(shí)用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實(shí)用的Java程序片段,對java開發(fā)項(xiàng)目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關(guān)于小米推送Java代碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩(wěn)中求8032021-07-12
  • Java教程Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決

    Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程xml與Java對象的轉(zhuǎn)換詳解

    xml與Java對象的轉(zhuǎn)換詳解

    這篇文章主要介紹了xml與Java對象的轉(zhuǎn)換詳解的相關(guān)資料,需要的朋友可以參考下...

    Java教程網(wǎng)2942020-09-17
  • Java教程Java實(shí)現(xiàn)搶紅包功能

    Java實(shí)現(xiàn)搶紅包功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程Java8中Stream使用的一個注意事項(xiàng)

    Java8中Stream使用的一個注意事項(xiàng)

    最近在工作中發(fā)現(xiàn)了對于集合操作轉(zhuǎn)換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點(diǎn),所以這篇文章主要給大家介紹了關(guān)于Java8中S...

    阿杜7482021-02-04
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經(jīng)有好久沒有升過級了。升級完畢重啟之后,突然發(fā)現(xiàn)好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
主站蜘蛛池模板: www.爱情岛论坛 | 国产欧美一区二区三区免费看 | 国产探花在线观看 | 国产精品高清一区二区三区不卡 | 人体做爰aaaa免费 | 国产深夜视频 | 青草园网站在线观看 | 日本最新伦中文字幕 | 肉文高h文 | 国产白虎| 欧美亚洲免费 | 69欧美另类xxxxx高清 | 我不卡影院手机在线观看 | 国产成人盗拍精品免费视频 | 精品一区二区三区免费站 | 日本精品一卡二卡≡卡四卡 | 日产乱码卡1卡2卡三卡四在线 | 糖心vlog视频永久破解版 | 99re精品在线| aaaa黄色片| 青青热久免费精品视频精品 | 91婷婷射 | chinese高中生gay男同 | 香蕉免费一区二区三区 | 俄罗斯海滩厕所偷窥 | 嫩草在线观看视频 | 日本红怡院亚洲红怡院最新 | 果冻传媒九一制片厂网站 | 亚洲精品免费视频 | 超级乱淫伦短篇在车上 | 风间由美被义子中文字幕 | 好吊妞视频998www | 亚洲精品丝袜在线一区波多野结衣 | 国内精品视频九九九九 | 国产性做久久久久久 | 国产欧美久久久精品影院 | 精品欧美小视频在线观看 | 亚洲国产在线2o20 | 亚洲国产精品久久精品怡红院 | 91精品国产综合久久福利 | 丝瓜视频看污片 |