创建虚拟网站做点击,精品网站建设比较好,触屏手机网站设计,模仿淘宝详情页做网站Java MySQL 实现存储完整 Json 一、应用场景二、数据库配置三、后端代码配置1、maven 依赖2、实体类3、Service 实现类4、xml 文件 四、测试1、新增接口2、查询接口3、数据表内容 一、应用场景
将前端传过来的 Json 完整存储到 MySQL 中#xff0c;涉及技术栈为 Java、MyBat… Java MySQL 实现存储完整 Json 一、应用场景二、数据库配置三、后端代码配置1、maven 依赖2、实体类3、Service 实现类4、xml 文件 四、测试1、新增接口2、查询接口3、数据表内容 一、应用场景
将前端传过来的 Json 完整存储到 MySQL 中涉及技术栈为 Java、MyBatis、MySQL。
注意MySQL 5.7.8 以后才支持 json 类型。
二、数据库配置
将相应字段的类型设为 json。
三、后端代码配置
1、maven 依赖 dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.75/version/dependency2、实体类
对应的属性使用 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 类型这里是 typeHandlercom.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler。
?xml version1.0 encodingUTF-8?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.example.demo.mapper.TestMapperresultMap idBaseResultMap typecom.example.demo.entity.Testid propertyid columnid jdbcTypeVARCHAR/result propertyjsonData columnjson_data jdbcTypeOTHERtypeHandlercom.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler//resultMapinsert idinsertinsert into testtrim prefix( suffix) suffixOverrides,if testid ! null and id ! id,/ifif testjsonData ! nulljson_data,/if/trimvaluestrim prefix( suffix) suffixOverrides,if testid ! null and id ! #{id},/ifif testjsonData ! null#{jsonData,typeHandlercom.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler}/if/trim/insertselect idgetDetailById resultMapBaseResultMapselect *from testwhere is_deleted 0and id #{id}/select
/mapper四、测试
1、新增接口 2、查询接口 3、数据表内容