MyBatis-Plus 字段填充失效
问题现象
已配置 MyBatis-Plus 字段自动填充:
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
}
}
PO
类字段也制定了自动填充策略:
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonSerialize(using = LocalDateTimeSerializer.class)
private LocalDateTime createTime;
但是往表里插入数据时,createTime
字段就是为 null
,自动填充并未生效。
问题分析
当天 Bing 上搜索 FieldFill
,对着查看了自己的配置,确定没有问题。
第二天又用 Baidu 搜索了一下,果然让我找到一篇文章:https://www.freesion.com/article/60151065789/
问题原因
多数据源设置 sqlSessionFactory
时没有将自定义的 MetaObjectHandler
配置进来导致自动填充字段失效。
经验教训
- 手动实现多数据源的话,MyBatis-Plus 一套相关的东西都需要配置进去,如字段自动填充,分页拦截器等。
- 此前也碰到过 Bing 没找到有用信息,在 Baidu 找到的情况,中文搜索看来还是 Baidu 更强一点。
- 多数据源更推荐使用 dynamic-datasource-spring-boot-starter。
本文作者:ageovb
本文链接:https://www.cnblogs.com/ageovb/p/16204815.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
分类:
标签:
,
,
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步