springboot+mybatis+pgsql存储jsonb格式数据

Posted philip113

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot+mybatis+pgsql存储jsonb格式数据相关的知识,希望对你有一定的参考价值。

maven
将runtime注释掉,不然会报错找不到我们要用的PGObject类

    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
    </dependency>

sql
DROP TABLE IF EXISTS sensor CASCADE;

CREATE TABLE sensor (
id serial PRIMARY KEY,
name VARCHAR(30) NOT NULL,
type VARCHAR NOT NULL,
experiment_id INT NOT NULL references experiment(id),
position JSONB DEFAULT NULL,
description TEXT DEFAULT NULL,
addition JSONB DEFAULT NULL,
data_unit VARCHAR(6) DEFAULT NULL,
state BOOLEAN DEFAULT TRUE,
created_date TIMESTAMP DEFAULT NOW()
);
CREATE INDEX index_experiment_id ON sensor(experiment_id);
bean
pg数据库中字段为json/jsonb,对应java实体类的类型是Object,以上数据库对应的bean

package com.dbhd.gvs.bean;

import com.dbhd.gvs.enumeration.EquipmentType;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.stereotype.Repository;

import java.io.Serializable;
import java.util.Date;

@Data
@Repository
public class Sensor implements Serializable {
private static final long serialVersionUID=1L;
private Integer id;
private String name;
private EquipmentType type;
private Integer experimentId;
private Object position;
private String description;
private Object addition;
private String dataUnit;
private Boolean state;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") // 返回的时间格式
private Date createdDate;
}

JSONTypeHandlerPg
在mybatis的xml中,常规无法直接进行映射,需要自己写一个TypeHandler,自定义一个JSONTypeHandlerPg类

具体代码:

package com.dbhd.gvs.common;

import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedTypes;
import org.postgresql.util.PGobject;

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

@MappedTypes({Object.class})
public class JsonTypeHandler extends BaseTypeHandler












































以上是关于springboot+mybatis+pgsql存储jsonb格式数据的主要内容,如果未能解决你的问题,请参考以下文章

mybatis 自定义TypeHandler数组映射处理器 (pgsql text[]与java String[]映射)

PL/pgSQL 重启生成序列

mybatis的xml里的sql如何使用注释,以及使用 `--` 进行注释的巨坑

mybatis的xml里的sql如何使用注释,以及使用 `--` 进行注释的巨坑

pgsql jsonb的索引

SpringBoot使用·下篇(SpringBoot集成MyBatis+日志打印+MyBatis-plus)