保存Json对象到数据库

背景

项目过程中可能需要保存 Json 对象到数据库中。

实现方式

有两种实现方式,一种是直接保存 Json 对象到数据库,这种方式在创建实体类以及编写 Mapper XML 脚本时需要对 Json 对象做格式转换,另一种是直接以字符串保存,取用时使用 JSONObject 解析为 Json 对象。

1. 直接以 Json 对象保存到数据库

  • 创建实体类时,类上加 @TableName 注解,autoResultMap 参数设为 true;
  • 要保存为 Json 格式的字段设置为 JSONObject 类型,添加 @TableField 注解,typeHandler 参数设置为 JacksonTypeHandler.class

如下

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;

@TableName(value = "query_condition", autoResultMap=true)
public class QueryConditionDAO {
   
    
    @TableField(value = "queryCondition", typeHandler = JacksonTypeHandler.class)
    private JSONObject queryCondition;

}

然后在编写 Mapper XML 脚本时,insertupdate 语句中需要对 Json 属性的字段设置 typeHandlerjdbcType,如下

	<update id="updateQueryCondition">
        update ${
   tableName}
        set `query_condition`=#{
   queryCondition, jdbcType=OTHER, typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler}
        where `id`=#{
   id}
    </update>

2. 以 String 类型保存到数据库

以字符串类型保存很简单,如下

public class QueryConditionDAO {
   

    private String queryCondition;

}

在查询数据时,通过 JSONObject.parseObject() 方法将字符串解析为 JSONObject 类型即可。

JSONObject queryCondition = JSONObject.parseObject(queryConditionString)

小贴士
通常要保存一个 Json 字符串的话,一般都是比较大的数据,CHARVARCHAR 类型是不够的,而需要用 TEXT 类型来存储。要根据具体的数据量的大小决定使用 TEXT 还是 MEDIUMTEXT 或者是 LONGTEXT

相关推荐

  1. 保存Json对象数据库

    2024-02-22 09:44:05       53 阅读
  2. 利用blob对象于浏览器保存图片本地

    2024-02-22 09:44:05       35 阅读
  3. coco128数据对象类别中英文对照json格式

    2024-02-22 09:44:05       37 阅读
  4. Unity 安卓将数据保存json并读取

    2024-02-22 09:44:05       35 阅读
  5. python--scrapy 保存数据 mongodb

    2024-02-22 09:44:05       43 阅读
  6. mysql每天自动将数据库数据保存指定文件夹

    2024-02-22 09:44:05       36 阅读
  7. 关于json文件的保存

    2024-02-22 09:44:05       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-22 09:44:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-22 09:44:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-02-22 09:44:05       82 阅读
  4. Python语言-面向对象

    2024-02-22 09:44:05       91 阅读

热门阅读

  1. LeetCode--代码详解 4.寻找两个正序数组的中位数

    2024-02-22 09:44:05       49 阅读
  2. Docker实战之下载Mysql、Redis、Zimg

    2024-02-22 09:44:05       60 阅读
  3. k8s-权限管理

    2024-02-22 09:44:05       47 阅读
  4. CDC 整合方案:MySQL > Flink CDC > Kafka > Hudi

    2024-02-22 09:44:05       57 阅读
  5. 通过API接口实现自动化数据同步

    2024-02-22 09:44:05       65 阅读
  6. 数据分析Pandas专栏---第二章<Pandas四个关键词>

    2024-02-22 09:44:05       50 阅读
  7. 高效的嵌入式系统架构设计

    2024-02-22 09:44:05       61 阅读
  8. 每天一个数据分析题(一百六十六)

    2024-02-22 09:44:05       58 阅读