欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mybatis連接PGSQL中對(duì)于json和jsonb的處理方法

 更新時(shí)間:2024年11月08日 10:52:41   作者:沐雪架構(gòu)師  
在使用PostgreSQL數(shù)據(jù)庫(kù)時(shí),將表字段設(shè)置為jsonb格式可以存儲(chǔ)JSON數(shù)據(jù),本文給大家介紹mybatis連接PGSQL中對(duì)于json和jsonb的處理方法,感興趣的朋友一起看看吧

pgsql數(shù)據(jù)庫(kù)表字段設(shè)置了jsonb格式;在java的實(shí)體里使用String或者對(duì)象轉(zhuǎn)換會(huì)一直提示一個(gè)錯(cuò)誤:

Caused by: org.postgresql.util.PSQLException: ERROR: column "xx" is of type jsonb but expression is of type character varying

需要加一個(gè)轉(zhuǎn)換方法:

 
import com.alibaba.fastjson.JSON;
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;
/**
 *  PGJsonTypeHandler:處理Object對(duì)象類型與postgresql中JSONB類型之間的轉(zhuǎn)換
 *  author:lipu
 *  created_at:2021/07/29 14:00
 */
@SuppressWarnings("unchecked")
@MappedTypes(value = {Object.class})
public class PGJsonbTypeHandler<T extends Object> extends BaseTypeHandler<T> {
    private static final PGobject pgObject = new PGobject();
    @Override
    public void setNonNullParameter(PreparedStatement preparedStatement, int i, T parameter, JdbcType jdbcType) throws SQLException {
        if (preparedStatement != null) {
            pgObject.setType("jsonb");
            pgObject.setValue(JSON.toJSONString(parameter));
            preparedStatement.setObject(i, pgObject);
        }
    }
    @Override
    public T getNullableResult(ResultSet rs, String columnName) throws SQLException {
        return (T) JSON.parse(rs.getString(columnName));
    }
    @Override
    public T getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
        return (T) JSON.parse(rs.getString(columnIndex));
    }
    @Override
    public T getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
        return (T) JSON.parse(cs.getString(columnIndex));
    }
}

定義實(shí)體DO的時(shí)候,指定:

@TableField(typeHandler = PGJsonbTypeHandler.class) // 用于 PostgreSQL 的 JSONB 類型

比如:

    @TableField(typeHandler = PGJsonbTypeHandler.class) // 用于 PostgreSQL 的 JSONB 類型
    private ShipToAddr shipToAddr;

到此這篇關(guān)于mybatis連接PGSQL中對(duì)于json和jsonb的處理的文章就介紹到這了,更多相關(guān)mybatis PGSQL json和jsonb處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論