首页 前端知识 Java MySQL 实现存储完整 Json

Java MySQL 实现存储完整 Json

2024-08-30 20:08:09 前端知识 前端哥 161 498 我要收藏

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 {
    @Autowired
    private TestMapper testMapper;

    @Override
    public Test getDetailById(String id) {
        return testMapper.getDetailById(id);
    }

    @Override
    public 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 mapper
        PUBLIC "-//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 test
        where is_deleted = 0
          and id = #{id}
    </select>
</mapper>

四、测试

1、新增接口

在这里插入图片描述

2、查询接口

在这里插入图片描述

3、数据表内容

在这里插入图片描述

转载请注明出处或者链接地址:https://www.qianduange.cn//article/17273.html
标签
评论
发布的文章

安装Nodejs后,npm无法使用

2024-11-30 11:11:38

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!