当前位置: 首页 > web >正文

【亲测有效】MybatisPlus中MetaObjectHandler自动填充字段失效

MybatisPlus中MetaObjectHandler自动填充字段失效问题

首先如下配置是最基础的, 本文解决的是失效问题, 如下基础配置不再赘述 !

MetaObjectHandler类

注意: MetaObjectHandler类不加@Component注解在config类中使用@Bean注解也可

//@Component
public class FillHandler implements MetaObjectHandler {@Overridepublic void insertFill(MetaObject metaObject) {this.strictInsertFill(metaObject, "createTime", Date.class, new Date());}@Overridepublic void updateFill(MetaObject metaObject) {this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());}
}

公共字段实体类(其他实体类继承即可)

@Data
public class BaseEntity {@TableId(type = IdType.AUTO)private Long id;//配置插入的时候自动填充create_time@TableField(value = "create_time", fill = FieldFill.INSERT)private Date createTime;//配置更新的时候自动填充create_time@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)private Date updateTime;
}

发现问题

MybatisPlus中MetaObjectHandler自动填充字段失效, 并且打断点到FillHandler中, 没有进入调试, 说明FillHandler压根没有注入到mybatis-plus中

在这里插入图片描述

解决问题

修改MybatisPlusConfig类中配置具体如下图所示
在这里插入图片描述
我的配置类代码如下, 按照自己项目的配置略微修改即可, 仅供参考

@Configuration
@MapperScan(value = {"com.lnsoft.sdhxgk.heartbeat.mapper", "com.lnsoft.sdhxgk.**.mapper"})
@RequiredArgsConstructor
public class MybatisPlusConfig {private final MybatisPlusProperties properties;@Bean@Primary@ConfigurationProperties("spring.datasource")public DataSource dataSource(){DataSource datasource = new DruidDataSource();return datasource;}@Bean@Primarypublic SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {MybatisSqlSessionFactoryBean factory = new MybatisSqlSessionFactoryBean();if (!ObjectUtils.isEmpty(this.properties.resolveMapperLocations())) {factory.setMapperLocations(this.properties.resolveMapperLocations());}MybatisConfiguration configuration = this.properties.getConfiguration();if (configuration == null && !StringUtils.hasText(this.properties.getConfigLocation())) {configuration = new MybatisConfiguration();}factory.setConfiguration(configuration);factory.setVfs(SpringBootVFS.class);GlobalConfig globalConfig = this.properties.getGlobalConfig();globalConfig.setMetaObjectHandler(new FillHandler());factory.setGlobalConfig(globalConfig);factory.setDataSource(dataSource);return factory.getObject();}@Beanpublic MetaObjectHandler metaObjectHandler() {return new FillHandler();}@Bean@Primarypublic DataSourceTransactionManager dataSourceTransactionManager(DataSource dataSource){return new DataSourceTransactionManager(dataSource);}@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();// 分页插件interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));// 乐观锁插件interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());return interceptor;}
}

再次启动项目, 自动填充功能生效 !

http://www.xdnf.cn/news/13856.html

相关文章:

  • Tess4J:基于 Java 的 OCR 解决方案
  • php反序列化漏洞学习
  • 电脑PC端使用的备忘录记事软件推荐哪个
  • 【3】使用TRAE AI在已有框架中新增页面并实现切换的痛苦经历
  • boa 找不到动态库的解决办法:
  • 【零基础勇闯嵌入式岗】从单片机低功耗中获得的启发
  • 正则表达式入门
  • 【AIGC】Qwen3-Embedding:Embedding与Rerank模型新标杆
  • 【狂飙AGI】第2课:大模型方向市场分析
  • # Flask:Python的轻量级Web框架入门之旅(超级实用!)
  • 测试过程中有哪些风险?
  • KU115LPE-V10型FPGA加速卡
  • Linux操作系统之文件系统下
  • 友思特方案 | 友思特车载双目相机技术赋能农业:Monarch 智能拖拉机解决方案
  • linux基础day01
  • [25-cv-06422]David律所代理Dreams USA玩具手办商标维权
  • Java日期格式化
  • Swift 解法详解:如何在二叉树中寻找最长连续序列
  • NAS文件共享、PACS影像存储,速率提升400%?
  • PostgreSQL认证怎么选?PGCP中级认证、PGCM高级认证
  • 基于 Redis 的幂等性设计:SpringBoot @Async 在高并发 MySQL 日志存储中的应用
  • Vue3+TypeScript实现迭代器模式
  • FOC电机三环控制
  • aws s3 sdk c++使用指南、适配阿里云oss和aws
  • 「Java EE开发指南」如何用MyEclipse创建一个WEB项目?(一)
  • DDcGAN_codes
  • 【python】执行deactivate没有关闭虚拟环境
  • 交易所 java, web3 交易所简易模块
  • [SKE]CPU 与 GPU 之间数据加密传输的认证与异常处理
  • 【线程与线程池】线程数设置(四)