当前位置: 首页 > news >正文

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.lryc.cn/news/392979.html

相关文章:

  • 解决刚申请下来的AWS EC2,无法用finalshell连接的问题
  • 如何在PD虚拟机中开启系统的嵌套虚拟化功能?pd虚拟机怎么用 Parallels Desktop 19 for Mac
  • vue中实现button按钮的重复点击指令
  • 智能与伦理:Kimi与学术道德的和谐共舞
  • mac有什么解压软件 mac怎么解压7z软件 苹果电脑好用的压缩软件有哪些
  • C语言_练习题
  • Type-C接口快充取电技术的实现
  • 压测工具---Ultron
  • Kubernetes 负载均衡器解决方案 MetalLB实践
  • 力扣爆刷第159天之TOP100五连刷61-65(翻转单词、对称二叉树、遍历求和)
  • (七)[重制]C++命名空间与标准模板库(STL)
  • Elasticsearch:Runtime fields - 运行时字段(一)
  • 03:C语言运算符
  • JAVA每日作业day7.4
  • WordPress网站违法关键词字过滤插件下载text-filter
  • ros1仿真导航机器人 navigation
  • Python制作动态颜色变换:颜色渐变动效
  • Python 异步编程介绍与代码示例
  • 堆叠的作用
  • ubuntu 如何查看某一个网卡的ip地址
  • 跨界客户服务:拓展服务边界,创造更多价值
  • linux驱动编程 - kfifo先进先出队列
  • JS 四舍五入使用整理
  • 上万组风电,光伏,用户负荷数据分享
  • 在物联网快速发展的趋势下,Java 怎样优化对低功耗、资源受限的边缘设备的支持,保障物联网应用的稳定运行?
  • java-HashSet 源码分析 1
  • K8S 部署 EFK
  • AI Earth应用—— 在线使用sentinel数据VV和VH波段进行水体提取分析(昆明抚仙湖、滇池为例)
  • 基于Hadoop平台的电信客服数据的处理与分析③项目开发:搭建基于Hadoop的全分布式集群---任务9:HBase的安装和部署
  • go语言day09 通道 协程的死锁