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)建者、更新時間、更新者
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