SpringBoot中如何让实体类的List属性自动转成Json入库

8 篇文章 0 订阅

之前业务开发时,有一个字段接收的数据是Json格式的,并且需要以Json形式入库:

图片

数据库中是这样存储的,这里实际是一个Json数组。

[
  {
    "label": "result1",
    "name": "较好",
    "readonly": false
  },
  {
    "label": "result2",
    "name": "一般",
    "readonly": false
  },
  {
    "label": "result3",
    "name": "较差",
    "readonly": false
  },
  {
    "label": "result4",
    "name": "极差",
    "readonly": false
  }
]

如果这个数据你要存取,你会怎么做?存入时,前端直接传Json格式的数据给你。取出时,你可能会再将Json数据转成List,以便做其他的操作。

但是在面向对象的思想中,这个Json数组中的每个元素就是一个对象,我们可不可以在代码层中以List的形式存,然后以List的形式取出,中间的Json转换有程序自动去做,不需要开发去手动转。

当然有实现的方法,我们来看效果:

图片

我们在实体类中的这个字段写成Lis形式的,在上面添加@ColumnType注解。这个注解用来实现List与Json之间的自动互转。然后需要在Mapper.xml文件中配置:

<result column="survey_conclusion_options" property="surveyConclusionOptions" typeHandler="com.xxx.SurveyConclusionTemplateTypeHandler" />

我们在这个字段添加typeHandler

这样我们下代码存数据的时候就是添加List而不是Json了。

图片

查看一下数据库,已经自动转成Json了:

我们取出时,只需要直接查询,不需要做别的处理,返回的就是List了。

图片

是不是存取很方便。

现在我们来看看字段注解中SurveyConclusionTemplateTypeHandler这个转换类。

图片

这里用到了JsonTypeHandler,并且指定了实体类。

我们来看看JsonTypeHandler

图片

主要是做Json的处理。完整代码网上可以自行下载。

好了这篇文章就到这里啦,希望对大家有帮助。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值