springboot+mybatis处理json数据

  • 注意:Navicat应用需要升级,至字段拥有json类型在这里插入图片描述
  • 注意导入fastion的包,低版本toJSONString()==高版本toString()
		<dependency>
			<groupId>com.alibabagroupId>
			<artifactId>fastjsonartifactId>
			<version>1.2.7version>
		dependency>

处理JSONObject数据

实体类

在这里插入图片描述

映射文件

springboot+mybatis处理json数据_第1张图片

自定义类型转换器继承BaseTypeHandler接口

  • 注意点
  • @MappedTypes和@MappedJdbcTypes
  • BaseTypeHandler
  • JSONObject对象的parseObject()方法
package com.springboot.vue.util;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.apache.ibatis.type.MappedTypes;

import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * @author HJ
 * @theme
 * @time 2022/9/15
 */
@MappedTypes(JSONObject.class)
@MappedJdbcTypes(JdbcType.VARCHAR)
public class JsonTypeHandler extends BaseTypeHandler<JSONObject> {
    @Override
    public void setNonNullParameter(PreparedStatement ps, int i, JSONObject parameter, JdbcType jdbcType) throws SQLException {
        ps.setString(i,String.valueOf(parameter.toJSONString()));
    }

    @Override
    public JSONObject getNullableResult(ResultSet rs, String columnName) throws SQLException {
        String sqlJson = rs.getString(columnName);
      if (null!=sqlJson) {
          return JSONObject.parseObject(sqlJson);
      }
       return null;
    }

    @Override
    public JSONObject getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
        String sqlJson = rs.getString(columnIndex);
        if (null!=sqlJson){
            return JSONObject.parseObject(sqlJson);
        }
        return null;
    }

    @Override
    public JSONObject getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
        String sqlJson = cs.getString(columnIndex);
        if (null!=sqlJson){
            return JSONObject.parseObject(sqlJson);
        }
        return null;
    }
}

mybatis中配置转换器的地址 — 切记配置

在这里插入图片描述
自我:mybatis-plus.type-handlers-package

Navicat中的数据

在这里插入图片描述

处理JSONArray数据

实体类

在这里插入图片描述

映射文件不变

改变自定义转换器的数据类型

  • 注意点
  • @MappedTypes和@MappedJdbcTypes
  • BaseTypeHandler
  • JSONObject对象的parseObject()方法
package com.springboot.vue.util;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.apache.ibatis.type.MappedTypes;

import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * @author HJ
 * @theme
 * @time 2022/9/15
 */
@MappedTypes(JSONArray.class)
@MappedJdbcTypes(JdbcType.ARRAY)
public class JsonTypeHandler extends BaseTypeHandler<JSONArray> {
    @Override
    public void setNonNullParameter(PreparedStatement ps, int i, JSONArray parameter, JdbcType jdbcType) throws SQLException {
        ps.setString(i,String.valueOf(parameter.toJSONString()));
    }

    @Override
    public JSONArray getNullableResult(ResultSet rs, String columnName) throws SQLException {
        String sqlJson = rs.getString(columnName);
        if (null!=sqlJson){
            return JSONObject.parseArray(sqlJson);
        }
        return null;
    }

    @Override
    public JSONArray getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
        String sqlJson = rs.getString(columnIndex);
        if (null!=sqlJson){
            return JSONObject.parseArray(sqlJson);
        }
        return null;
    }

    @Override
    public JSONArray getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
        String sqlJson = cs.getString(columnIndex);
        if (null!=sqlJson){
            return JSONObject.parseArray(sqlJson);
        }
        return null;
    }
}

配置地址不变

Navicat中的数据

[{"a": "dfw"}, {"b": "dffw"}]

springboot+mybatis处理json数据_第2张图片

你可能感兴趣的:(mybatis,spring,boot,json)