springboot整合sql中的json字段

springboot整合sql中的json字段

1. 数据库

新建个测试表,包含id和json类型的字段
在这里插入图片描述

2. springboot准备

1、pom引入
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>
        <!--mybatis-plus依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.2.0</version>
        </dependency>
2、创建基础文件

其中对应字段类型为JSONObject,且在@TableField()中加入typeHandler = JacksonTypeHandler.class
@TableField(value = “jsonStr”,typeHandler = JacksonTypeHandler.class)
在这里插入图片描述

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@TableName(value = "test_table")
public class TestTable {
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 测试json
     */
    @TableField(value = "jsonStr",typeHandler = JacksonTypeHandler.class)
    private JSONObject jsonstr;
}
3、创建映射xml

在对应的字段 标签中加入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.qingning.mapper.TestTableMapper">
  <resultMap id="BaseResultMap" type="com.qingning.bean.TestTable">
    <!--@mbg.generated-->
    <!--@Table test_table-->
    <id column="id" jdbcType="INTEGER" property="id" />
    <result column="jsonStr" jdbcType="VARCHAR" property="jsonstr" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, jsonStr
  </sql>

  <select id="listDetails" resultMap="BaseResultMap">
    SELECT id,jsonStr FROM test_table
  </select>
</mapper>
4、其他的正常操作即可

3、测试

1、创建接口
import com.qingning.bean.TeacherDetails;
import com.qingning.bean.TestTable;
import com.qingning.common.utils.SessionUtil;
import com.qingning.service.common.TestTableService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Controller
@RequestMapping("/test/details")
public class TestController {
    @Autowired
    private TestTableService testTableService;

    @GetMapping("/details")
    @ResponseBody
    public SessionUtil toDetails() {
        try {
            List<TestTable> testTables = this.testTableService.listDetails();
            return SessionUtil.ok(testTables);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 保存教师详情
     * @return
     */
    @PostMapping("/add")
    @ResponseBody
    public SessionUtil addTeacherDetails(@RequestBody TestTable testTable) {
        try {
            this.testTableService.save(testTable);
            return SessionUtil.ok();
        }catch (Exception e){
            e.printStackTrace();
        }

    }
}
2、结果

在这里插入图片描述

在这里插入图片描述

4、总结

1、用mybatisplus自带的类型转换即可,只要在类和映射文件的xml文件中配置即可
2、若想在列表中查询json的数据,不建议用mybatisplus自带的list()方法,查出的结果可能会为null,需要自己在xml中写查询sql!

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值