MybatisPlus如何实现插入或更新数据时自动填充更新数据
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍MybatisPlus如何实现插入或更新数据时自动填充更新数据,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Maven org.springframewo
千家信息网最后更新 2026年11月02日MybatisPlus如何实现插入或更新数据时自动填充更新数据解决方案
这篇文章主要介绍MybatisPlus如何实现插入或更新数据时自动填充更新数据,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
Maven
org.springframework.boot spring-boot-starter-parent 2.2.6.RELEASE com.baomidou mybatis-plus-boot-starter 3.1.0
解决方案
1、 实体类
/** * 基础Bean */@Datapublic class BaseEntity implements Serializable { @TableField(value = "create_user", fill = FieldFill.INSERT) // 新增执行 private String createUser; @TableField(value = "create_time", fill = FieldFill.INSERT) private LocalDateTime createTime; @TableField(value = "update_user", fill = FieldFill.INSERT_UPDATE) // 新增和更新执行 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; /** * 部门父节点ID **/ private Long parentId; /** * 部门名称 **/ private String deptName; /** * 显示顺序 **/ private Integer orderNum; /** * 用户状态(0:正常 1:禁用) **/ private Integer status; @TableField(exist = false) private List children; } 2、拦截器MetaObjectHandler
/** * @author ShenTuZhiGang * @version 1.0.0 * @date 2020-11-26 15:52 */@Slf4j@Componentpublic 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); } }}不需要以下代码:
@Configurationpublic class MyBatisPlusConfig { /** * 自动填充功能 * @return */ @Bean public GlobalConfig globalConfig() { GlobalConfig globalConfig = new GlobalConfig(); globalConfig.setMetaObjectHandler(new MetaHandler()); return globalConfig; } }3、测试
@RequiresPermissions("sys:dept:add")@PostMapping("/add")@ResponseBodypublic R add(@RequestBody SysDeptEntity deptEntity) { logger.info("添加信息={}", deptEntity); sysDeptService.save(deptEntity); // 不再需要设置setCreateUser、setCreateTime、setUpdateUser、setUpdateTime操作,代码更优美 return R.ok();}以上是"MybatisPlus如何实现插入或更新数据时自动填充更新数据"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
更新
数据
部门
代码
内容
篇文章
优美
价值
信息
兴趣
功能
名称
基础
实体
小伙
小伙伴
方案
更多
状态
用户
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技
互联网和科技创新
互联网科技未来
科技类互联网
互联网科技金融公司
远拓互联网科技
狮子座互联网科技培训
互联网金融监管科技
互联网和高科技公司
现代科技和互联网有关系吗
互联网金融科技公司干啥的
互联网科技公司实习生
消费医药和互联网科技
996高科技互联网公司
众安科技工业互联网合作
有人说阿里系是互联网科技企业
半导体行业属于互联网高科技类吗
广州互联网高科技取餐柜
互联网硬科技公司
亚光科技低轨卫星互联网
为想互联网科技怎么样
科技互联网公司装修
互联网巨头反垄断金融科技
猫创互联网科技
互联网公司会议桌创意科技软装饰
互联网金融科技公司干啥的
厦门比较好的科技互联网公司
互联网科技的全部知识
群盈汇互联网科技有限公司
互联网领先科技宣传片