保存Json对象到数据库

文章目录

  • 背景
  • 实现方式
    • 1. 直接以 Json 对象保存到数据库
    • 2. 以 String 类型保存到数据库

背景

项目过程中可能需要保存 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/695270.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【畅玩雾锁王国】雾锁王国服务器手动部署教程2024年

阿里云雾锁王国服务器搭建教程是基于计算巢服务&#xff0c;3分钟即可成功创建Enshrouded游戏服务器&#xff0c;阿里云8核32G雾锁王国专用游戏服务器90元1个月、271元3个月&#xff0c;阿里云服务器网aliyunfuwuqi.com亲自整理雾锁王国服务器详细搭建教程&#xff1a; 一、前…

游戏配置二级缓存一致性问题解决方案

游戏服务器进程在启动的时候&#xff0c;一般会把所有策划配置数据加载到内存里&#xff0c;将主键以及对应的记录存放在一个HashMap容器里&#xff0c;这称为一级缓存。部分功能可能还需要缓存其他数据&#xff0c;这些称为二级缓存。举个例子&#xff0c;对于如下的玩家升级表…

Elasticsearch:了解人工智能搜索算法

作者&#xff1a;来自 Elastic Jessica Taylor, Aditya Tripathi 人工智能工具无处不在&#xff0c;其原因并不神秘。 他们可以执行各种各样的任务并找到许多日常问题的解决方案。 但这些应用程序的好坏取决于它们的人工智能搜索算法。 简单来说&#xff0c;人工智能搜索算法是…

采用uniapp实现的银行卡卡片, 支持H5和微信小程序

采用uniapp-vue3实现的银行卡卡片 支持H5、微信小程序&#xff08;其他小程序未测试过&#xff0c;可自行尝试&#xff09; 可用于参考学习 可到插件市场下载尝试&#xff1a; https://ext.dcloud.net.cn/plugin?id16736 使用示例

《Python 语音转换简易速速上手小册》第2章 Python 编程基础(2024 最新版)

文章目录 2.1 Python 语言基础2.1.1 基础知识深入基础总结 2.1.2 主要案例&#xff1a;数据分析脚本案例介绍案例 Demo案例分析 2.1.3 扩展案例 1&#xff1a;自动化邮件发送案例介绍案例 Demo案例分析 2.1.4 扩展案例 2&#xff1a;网页数据抓取案例介绍案例 Demo案例分析 2.2…

将本地项目上传到svn服务端和git

一、SVN 1.创建svn库,下面生成了三个文件夹,branches指分支,trunk下可以放项目 2.在本地checkout,填入svn库的地址,因为是新建的,所以checkout的是空文件夹 把自己的项目复制到trunk下,在项目上 右键-TortoiseSVN-add add完之后 右键-svn commit 3.idea打开这个项目,将项目跟…

C++面试宝典第31题:有效的数独

题目 判断一个9 x 9的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。 1、数字1-9在每一行只能出现一次。 2、数字1-9在每一列只能出现一次。 3、数字1-9在每一个以粗实线分隔的3 x 3宫内只能出现一次。 下图是一个部分填充的有效的数独,数独部分空格内已…

爬虫在网页抓取的过程中可能会遇到哪些问题?

在网页抓取&#xff08;爬虫&#xff09;过程中&#xff0c;开发者可能会遇到多种问题&#xff0c;以下是一些常见问题及其解决方案&#xff1a; 1. IP封锁&#xff1a; 问题&#xff1a;封IP是最常见的问题&#xff0c;抓取的目标网站会识别并封锁频繁请求的IP地址。 解决方案…

Js如何判断两个数组是否相等?

本文目录 1、通过数组自带方法比较2、通过循环判断3、toString()4、join()5、JSON.stringify() 日常开发&#xff0c;时不时会遇到需要判定2个数组是否相等的情况&#xff0c;需要实现考虑的场景有&#xff1a; 先判断长度&#xff0c;长度不等必然不等元素位置其他情况考虑 1…

Spring Boot中的@Scheduled注解:定时任务的原理与实现

1. 前言 本文将详细探讨Spring Boot中Scheduled注解的使用&#xff0c;包括其原理、实现流程、步骤和代码示例。通过本文&#xff0c;读者将能够了解如何在Spring Boot应用中轻松创建和管理定时任务。 2. Scheduled注解简介 在Spring框架中&#xff0c;Scheduled注解用于标记…

《Python 语音转换简易速速上手小册》第5章 音频数据处理(2024 最新版)

文章目录 5.1 音频数据的基本处理5.1.1 基础知识5.1.2 主要案例&#xff1a;音频剪辑工具案例介绍案例 Demo案例分析 5.1.3 扩展案例 1&#xff1a;自动音量调节器案例介绍案例 Demo案例分析 5.1.4 扩展案例 2&#xff1a;语音识别预处理案例介绍案例 Demo案例分析 5.2 使用 Py…

手把手教您安装2024最新版微信消息防撤回插件

文章目录 &#x1f4d6; 介绍 &#x1f4d6;&#x1f3e1; 环境 &#x1f3e1;&#x1f4d2; 使用方法 &#x1f4d2;&#x1f4dd; 步骤一&#x1f4dd; 步骤二 ⚓️ 相关链接 ⚓️ &#x1f4d6; 介绍 &#x1f4d6; 本文与大家分享一个大神开发的2024最新版本的微信消息防撤…

解决vite打包出现 “default“ is not exported by “node_modules/...问题

项目场景&#xff1a; vue3tsvite项目打包 问题描述 // codemirror 编辑器的相关资源 import Codemirror from codemirror;error during build: RollupError: "default" is not exported by "node_modules/vue/dist/vue.runtime.esm-bundler.js", impor…

修改Springboot默认序列化工具Jackson的配置

如果我们在Spring Boot应用中手动定义并注入了一个ObjectMapper Bean&#xff0c;那么这个自定义的ObjectMapper实例会替换掉Spring Boot默认配置的ObjectMapper。当Spring容器中存在多个同类型的Bean时&#xff0c;默认情况下最后一个创建的Bean将作为首选Bean&#xff08;如果…

Tomcat 学习之 Servlet

目录 1 Servlet 介绍 2 创建一个 Servlet 3 web.xml 介绍&#xff08;不涉及 filter 和 listener 标签&#xff09; 3.1 display-name 3.2 welcome-file-list 3.3 servlet 3.4 session-config 3.5 error-page 4 Tomcat 如何根据 URL 定位到 Servlet 5 执行 Servlet …

debezium源码之启动快照7步曲

欢迎收藏关注点赞&#xff0c; 持续输出CDC、debezium、flinkcdc内容&#xff0c;比心 代码仓库地址&#xff1a;https://github.com/debezium/debezium/blob/main/debezium-core/src/main/java/io/debezium/relational/RelationalSnapshotChangeEventSource.java 代码版本de…

不破不立,那些年错过的Python

随着OpenAI的发展&#xff0c;Python的重要性不言而喻。不知你是否和我一样&#xff0c;不知道曾经说过多少次我要学Python&#xff0c;都没有执行起来… 近期我在知识库中更新了一波Python教程&#xff0c;选取了这一篇分享给大家。 前言 很多时候我们需要让程序变成交互性的…

Linux系统——nginx服务介绍

一、Nginx——高性能的Web服务端 Nginx的高并发性能优于httpd服务 1.nginx概述 Nginx是由1994年毕业于俄罗斯国立莫斯科鲍曼科技大学的同学为俄罗斯rambler.ru公司开发的&#xff0c;开发工作最早从2002年开始&#xff0c;第一次公开发布时间是2004年10月4日&#xff0c;版本…

CSS基础和选择器

【一】CSS基础 【1】什么是CSS CSS&#xff08;层叠样式表&#xff09;是一种用于描述HTML&#xff08;超文本标记语言&#xff09;文档外观样式的语言。它通过定义样式规则来控制网页的布局、字体、颜色、背景等外观效果&#xff0c;使网页变得更加美观和可读。 【2】注释语…

第二证券:美国加息对中国股市的影响?美联储加息利好还是利空股市?

美国加息是一种紧缩的钱银政策&#xff0c;会招引出资者添加银行的出资&#xff0c;导致社会上的流动钱银减少&#xff0c;然后间接地导致股市流动资金减少&#xff0c;股市跌落&#xff0c;引起商场上的出资者恐慌&#xff0c;大量卖出&#xff0c;添加商场上的空方力量&#…