踩坑记录:数据库存Json数据

1 问题描述

        数据库可以存入Json数据,单时Json数据转换成对应的数据类型的时候为空。

2 代码

实体类:其中sceneValues字段存储的是json数据类型

Json数据类型:

typeHandler:

        这个 typeHandler 继承了 JacksonTypeHandler 类,主要目的是处理特定类型的 JSON 数据,将其反序列化为 Java 对象。

        构造函数调用的父类的构造函数,传递了 List.class 作为类型参数,表明这个处理器用于处理 List 类型的数据。创建一个 TypeReference 类型的 TypeReference 对象,用于描述要反序列化的目标类型。在这里,它描述了一个 List 类型的 SceneValue 对象。

        parse 方法,它使用对象映射器( getObjectMapper() )从输入的 JSON 字符串中反序列化数据。对象映射器是 Jackson 库中用于序列化和反序列化 JSON 数据的核心类。其中

getObjectMapper().readValue(json, typeReference) 

将 JSON 字符串 json 反序列化为一个对象,这个对象的类型是通过 typeReference 描述的,即一个 List<SceneValue>。

3 原因

因为在

@TableName(value = "biz_scene_value_table")

@TableName 注解中没有加上

@TableName(value = "biz_scene_value_table", autoResultMap = true)

autoResultMap = true属性。
        通常,在使用 MyBatis-Plus 时,autoResultMap 属性的默认值为 true ,这意味着
MyBatis-Plus 会自动为实体类生成 ResultMap。这个 ResultMap 将会映射实体类的属性与数据库表的列,以便进行查询操作时可以将查询结果映射为实体对象。所以加上这个属性之后,就可以将数据库的json数据转为成对应字段的数据类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值