【开发问题】MybatisPlus 的类型处理器注解没生效
本文发布于 2025年07月24日,阅读 4 次,点赞
0 次,归类于
开发问题记录

在数据库的实体类字段上配置了@TableField(typeHandler = JacksonTypeHandler.class)
注解,但是并没有生效,查询出来的字段值为 null。
by emanjusaka from https://www.emanjusaka.com/archives/mybatis-plus-typeHandler-invalid 彼岸花开可奈何
本文为原创文章,可能会更新知识点以及修正文中的一些错误,全文转载请保留原文地址,避免产生因未即时修正导致的误导。
博客:https://www.emanjusaka.com
博客园:https://www.cnblogs.com/emanjusaka
公众号:emanjusaka的编程栈
@TableField(typeHandler = JacksonTypeHandler.class)
private List<DailyRewardConfig> dailyRewardConfig;
查看注解源码,发现下面的注意事项。
/**
* 类型处理器 (该默认值不代表会按照该值生效),
* 只生效于 mp 自动注入的 method,
* 建议配合 {@link TableName#autoResultMap()} 一起使用
* <p>
* {@link ResultMapping#typeHandler} and {@link ParameterMapping#typeHandler}
*
* @since 3.1.2
*/
Class<? extends TypeHandler> typeHandler() default UnknownTypeHandler.class;
我发现注解 TableField#typeHandler()
需要配合 TableName#autoResultMap()
一起使用。
修改代码,加上 TableName#autoResultMap()
@TableName(value = "member_cash_config", autoResultMap = true)
@Data
public class MemberCashConfigDO extends BaseDO {
@TableId
private Long id;
@TableField(typeHandler = JacksonTypeHandler.class)
private List<DailyRewardConfig> dailyRewardConfig;
}
结果类型处理器正常工作,该字段也不再为null。