MybatisPlus 插入或更新數(shù)據(jù)時自動填充更新數(shù)據(jù)解決方案
Maven
<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、 實體類
/**
* 基礎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;
}
@Data
@TableName("sys_dept")
public class SysDeptEntity extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 部門ID
**/
@TableId
private Long deptId;
/**
* 部門父節(jié)點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
/**
* @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);
}
}
}
不需要以下代碼:
@Configuration
public class MyBatisPlusConfig {
/**
* 自動填充功能
* @return
*/
@Bean
public GlobalConfig globalConfig() {
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setMetaObjectHandler(new MetaHandler());
return globalConfig;
}
}
3、測試
@RequiresPermissions("sys:dept:add")
@PostMapping("/add")
@ResponseBody
public R add(@RequestBody SysDeptEntity deptEntity) {
logger.info("添加信息={}", deptEntity);
sysDeptService.save(deptEntity); // 不再需要設置setCreateUser、setCreateTime、setUpdateUser、setUpdateTime操作,代碼更優(yōu)美
return R.ok();
}
參考文章
使用MyBatis Plus自動添加數(shù)據(jù)庫表中的創(chuàng)建時間、創(chuàng)建者、更新時間、更新者
使用mybatis plus插入或更新數(shù)據(jù)時mysql表的添加時間和更新時間字段沒有更新(mybatis plus坑之一)
到此這篇關于MybatisPlus 插入或更新數(shù)據(jù)時自動填充更新數(shù)據(jù)解決方案的文章就介紹到這了,更多相關MybatisPlus 插入或更新自動填充內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- mybatisplus?實現(xiàn)接口MetaObjectHandler自動填充字段值
- mybatisplus實現(xiàn)自動填充時間的項目實踐
- MybatisPlus自動填充創(chuàng)建(更新)時間問題
- MybatisPlus字段自動填充失效,填充值為null的解決方案
- mybatisplus自動填充屬性值的實現(xiàn)步驟
- mybatisPlus自動填充更新時間的示例代碼
- 在MyBatisPlus中使用@TableField完成字段自動填充的操作
- Mybatisplus自動填充實現(xiàn)方式及代碼示例
- MybatisPlus 自動填充的實現(xiàn)
- MyBatisPlus實現(xiàn)自動填充字段的實踐
相關文章
深入淺析Java中Static Class及靜態(tài)內部類和非靜態(tài)內部類的不同
上次有朋友問我,java中的類可以是static嗎?我給他肯定的回答是可以的,在java中我們可以有靜態(tài)實例變量、靜態(tài)方法、靜態(tài)塊。當然類也可以是靜態(tài)的,下面小編整理了些關于java中的static class相關資料分享在腳本之家平臺供大家參考2015-11-11
@RequestBody注解Ajax post json List集合數(shù)據(jù)請求400/41
這篇文章主要介紹了@RequestBody注解Ajax post json List集合數(shù)據(jù)請求400/415的處理方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10
springboot3.2整合mybatis-plus詳細代碼示例
這篇文章主要給大家介紹了關于springboot3.2整合mybatis-plus的相關資料,Spring Boot是一個非常流行的Java Web框架,可以快速地搭建Web應用程序,需要的朋友可以參考下2023-12-12

