跳转到主要内容

MybatisPlus 的类型处理器注解没生效

Avatar emanjusaka
统计中…
338
0
MybatisPlus 的类型处理器注解没生效

在数据库的实体类字段上配置了@TableField(typeHandler = JacksonTypeHandler.class)注解,但是并没有生效,查询出来的字段值为 null。


作者:毅念安(Inian / Emanjusaka)|原创,后续会更新修正,转载请保留原文链接。
📝 独立博客:https://www.emanjusaka.com|博客园:https://www.cnblogs.com/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。

本文由 emanjusaka 创作,发表于 www.emanjusaka.com,采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

❋

微信扫码分享

微博
点赞是美意,赞赏是鼓励。如有帮助,可以关注下微信公众号。
微信 微信
支付宝 支付宝
查看赞赏名单 →
评论
← 上一篇 引入 Spring AI 依赖报错Could not find artifact org.springframework.ai... 下一篇 → GeoServer 跨域问题解决方案