Java + MySQL 实现存储完整 Json

Java + MySQL 实现存储完整 Json

  • 一、应用场景
  • 二、数据库配置
  • 三、后端代码配置
    • 1、maven 依赖
    • 2、实体类
    • 3、Service 实现类
    • 4、xml 文件
  • 四、测试
    • 1、新增接口
    • 2、查询接口
    • 3、数据表内容

一、应用场景

将前端传过来的 Json 完整存储到 MySQL 中,涉及技术栈为 JavaMyBatisMySQL

注意:MySQL 5.7.8 以后才支持 json 类型。

二、数据库配置

将相应字段的类型设为 json
在这里插入图片描述

三、后端代码配置

1、maven 依赖

 <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.75</version></dependency>

2、实体类

对应的属性使用 com.alibaba.fastjson.JSONObject 类型。

package com.example.demo.entity;import com.alibaba.fastjson.JSONObject;
import lombok.Data;import java.io.Serializable;@Data
public class Test implements Serializable {/*** 主键*/private String id;/*** 页面数据*/private JSONObject jsonData;
}

3、Service 实现类

package com.example.demo.service.impl;import com.alibaba.fastjson.JSONObject;
import com.example.demo.entity.Test;
import com.example.demo.mapper.TestMapper;
import com.example.demo.service.TestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class TestServiceImpl implements TestService {@Autowiredprivate TestMapper testMapper;@Overridepublic Test getDetailById(String id) {return testMapper.getDetailById(id);}@Overridepublic String saveTest(JSONObject req) {Test test = new Test();test.setJsonData(req);testMapper.insert(test);}
}

4、xml 文件

查询和新增都需要指明具体的 typeHandler,不然查询会查不到数据,新增会报错。
typeHandler 的值对应实体类的 JSONObject 类型,这里是 typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.TestMapper"><resultMap id="BaseResultMap" type="com.example.demo.entity.Test"><id property="id" column="id" jdbcType="VARCHAR"/><result property="jsonData" column="json_data" jdbcType="OTHER"typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/></resultMap><insert id="insert">insert into test<trim prefix="(" suffix=")" suffixOverrides=","><if test="id != null and id != ''">id,</if><if test="jsonData != null">json_data,</if></trim>values<trim prefix="(" suffix=")" suffixOverrides=","><if test="id != null and id != ''">#{id},</if><if test="jsonData != null">#{jsonData,typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler}</if></trim></insert><select id="getDetailById" resultMap="BaseResultMap">select *from testwhere is_deleted = 0and id = #{id}</select>
</mapper>

四、测试

1、新增接口

在这里插入图片描述

2、查询接口

在这里插入图片描述

3、数据表内容

在这里插入图片描述

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

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

相关文章

从资金管理的角度 谈谈伦敦金投资技巧

刚进入伦敦金市场的时候&#xff0c;笔者认为技术分析是很重要的&#xff0c;所以将学习伦敦金投资技巧的精力全部投入到技术分析的学习中。经过一系列交易的亏损&#xff0c;笔者才发现&#xff0c;其实交易管理才是最重要的。如果管理得好&#xff0c;30%的胜率&#xff0c;投…

嵌入式C语言面试相关知识——关键字(不定期更新)

嵌入式C语言面试相关知识——关键字 一、博客声明二、C语言关键字1、sizeof关键字2、static关键字3、const关键字4、volatile关键字5、extern关键字 一、博客声明 又是一年一度的秋招&#xff0c;怎么能只刷笔试题目呢&#xff0c;面试题目也得看&#xff0c;想当好厂的牛马其实…

Charles拦截发送数据包-cnblog

Charles拦截发送数据包 打开允许断点 右键要打断点的数据包&#xff0c;打断点 重新发请求进入断点模式 修改完毕后发送

C++实现简化版Qt的QObject(3):增加父子关系、属性系统

前几天写了文章&#xff1a; C实现一个简单的Qt信号槽机制 C实现简化版Qt信号槽机制&#xff08;2&#xff09;&#xff1a;增加内存安全保障 之后感觉还不够过瘾&#xff0c;Qt中的QObject体系里还有不少功能特性没有实现。为了提高QObject的还原度&#xff0c;今天我们将父子…

vscode远程连接linux(配置免密)

远程连接 1.首先保证物理机和虚拟机网络可以ping通 2.查看ubuntu得ip地址 ifconfig IP为&#xff1a;192.168.52.133 3.连接远程主机 配置免密 1.打开cmd运行ssh-keygen -t rsa 一路回车就行 2.打开window文件夹C:\Users\xbj\.ssh 3.用记事本打开id_rsa.pub文件复制公…

LeetCode刷题之搜索二维矩阵

2024 7/5 一如既往的晴天&#xff0c;分享几张拍的照片嘿嘿&#xff0c;好几天没做题了&#xff0c;在徘徊、踌躇、踱步。蝉鸣的有些聒噪了&#xff0c;栀子花花苞也都掉落啦&#xff0c;今天给他剪了枝&#xff0c;接回一楼来了。ok&#xff0c;做题啦&#xff01; 图1、宿舍…

数据结构之“栈”(全方位认识)

&#x1f339;个人主页&#x1f339;&#xff1a;喜欢草莓熊的bear &#x1f339;专栏&#x1f339;&#xff1a;数据结构 前言 栈是一种数据结构&#xff0c;具有" 后进先出 "的特点 或者也可见说是 ” 先进后出 “。大家一起加油吧冲冲冲&#xff01;&#xff01; …

解决vscode配置C++编译带有中文名称报错问题

在新电脑上安装vscode运行带有中文路径和中文名称的C代码时遇到报错 根据别人的教程将laugh.json文件中"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",改成了"program": "${fileDirname}\\output\\test.exe",&#x…

文化财经macd顶底背离幅图指标公式源码

DIFF:EMA(CLOSE,12) - EMA(CLOSE,26); DEA:EMA(DIFF,9); MACD:2*(DIFF-DEA),COLORSTICK; JC:CROSS(DIFF,DEA); SC:CROSSDOWN(DIFF,DEA); N1:BARSLAST(JC)1; N2:BARSLAST(SC)1; HH:VALUEWHEN(CROSSDOWN(DIFF,DEA),HHV(H,N1));//上次MACD红柱期间合约最大值 HH2:VALUEWHE…

docker部署mycat,连接上面一篇的一主二从mysql

一、docker下载mycat镜像 查看安装结果 这个名称太长&#xff0c;在安装容器时不方便操作&#xff0c;设置标签为mycat docker tag longhronshens/mycat-docker mycat 二、安装容器 先安装一个&#xff0c;主要目的是获得配置文件 docker run -it -d --name mycat -p 8066:…

nginx(三)—从Nginx配置熟悉Nginx功能

一、 Nginx配置文件结构 ... #全局块events { #events块... }http #http块 {... #http全局块server #server块{ ... #server全局块location [PATTERN] #location块{...}location [PATTERN] {...}}server{...}... #http全局块 …

怎样把自己电脑ip改成动态ip:步骤与解析

在今天的网络世界中&#xff0c;IP地址是计算机与互联网沟通的桥梁。而动态IP地址&#xff0c;作为其中的一种类型&#xff0c;由于其自动分配和管理的特性&#xff0c;为用户提供了更大的便利性和灵活性。那么&#xff0c;您是否想知道怎样将电脑IP改为动态呢&#xff1f;本文…

一级指针 二级指针

目录 一级指针 二级指针 通过二级指针打印原数据 一级指针 一级指针就是存放变量的指针 代码演示&#xff1a; #include<stdio.h> int main() {int a 10;int* pa &a;return 0; } pa就是一级指针变量&#xff0c;是变量就会有地址&#xff0c;因为变量都是在…

非堆成加密是公私钥使用

对称加密学习-CSDN博客 加密算法学习-CSDN博客 非对称加密算法使用一对密钥&#xff0c;包括一个公钥和一个私钥&#xff0c;它们是数学上相关联的&#xff0c;但公钥可以公开分享&#xff0c;而私钥必须保密。以下是使用非对称加密算法的一般步骤&#xff1a; 密钥生成&…

《昇思25天学习打卡营第13天|onereal》

今天学习的内容如下&#xff1a; DCGN生成漫画头像 在下面的教程中&#xff0c;我们将通过示例代码说明DCGAN网络如何设置网络、优化器、如何计算损失函数以及如何初始化模型权重。在本教程中&#xff0c;使用的动漫头像数据集共有70,171张动漫头像图片&#xff0c;图片大小均为…

L1218-L5298清零软件使用图解

清零前请取消打印任务&#xff0c;打印机用USB线接电脑并开启 双击[Resetter.exe]启动软件,点击[Select],选择Port打印机型号&#xff0c;然后点[OK]&#xff0c;如图。 [如果port下拉列表中找不到你的打印机&#xff0c;请更换USB接口&#xff0c;并重新开打印机重试。] 2.…

【IT领域新生必看】 Java编程中的重载(Overloading):初学者轻松掌握的全方位指南

文章目录 引言什么是方法重载&#xff08;Overloading&#xff09;&#xff1f;方法重载的基本示例 方法重载的规则1. 参数列表必须不同示例&#xff1a; 2. 返回类型可以相同也可以不同示例&#xff1a; 3. 访问修饰符可以相同也可以不同示例&#xff1a; 4. 可以抛出不同的异…

7 系列 FPGA 引脚及封装(参考ug475)

目录 I/O BankPins引脚定义I/O and Multi-Function PinsPower Supply PinsDedicated XADC PinsTransceiver PinsDedicated Configuration PinsTemperature Sensor Pins Device 视图整个 FPGAIOBILOGIC,OLOGIC,IDELAY,ODELAYBUFIO,BUFR,IDELAYCTRLBUFMRCEBRAM,DSPIBUFDS_GTE2CLB…

方法引用详解

什么是方法引用&#xff1f;&#xff1a;针对于函数式接口中的抽象方法 为什么用方法引用&#xff1f;&#xff1a;避免代码的重复&#xff0c;简便书写&#xff0c;提高效率 在使用Lambda表达式的时候&#xff0c;我们实际上传递进去的代码就是一种解决方案&#xff1a;拿参数…

警惕AI泡沫:巨额投资与回报失衡

尽管高科技巨头们在AI基础设施上投入巨资&#xff0c;但AI带来的收入增长尚未显现&#xff0c;揭示了生态系统末端用户价值的重大缺口。 红杉资本分析师David Cahn认为&#xff0c;AI企业需每年赚取约6000亿美元才能抵消其AI基础设施&#xff08;如数据中心&#xff09;的成本&…