最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mybatis連接PGSQL中對于json和jsonb的處理方法

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

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

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

需要加一個轉(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對象類型與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));
    }
}

定義實體DO的時候,指定:

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

比如:

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

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

相關(guān)文章

  • Spring延遲Bean初始化的實現(xiàn)示例

    Spring延遲Bean初始化的實現(xiàn)示例

    延遲初始化也叫做惰性初始化,指不提前初始化Bean,而是只有在真正使用時才創(chuàng)建及初始化Bean,本文主要介紹了Spring延遲Bean初始化的實現(xiàn)示例,感興趣的可以了解一下
    2024-06-06
  • SpringMVC JSON數(shù)據(jù)交互實現(xiàn)過程解析

    SpringMVC JSON數(shù)據(jù)交互實現(xiàn)過程解析

    這篇文章主要介紹了SpringMVC JSON數(shù)據(jù)交互實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • java生成csv文件亂碼的解決方法示例 java導出csv亂碼

    java生成csv文件亂碼的解決方法示例 java導出csv亂碼

    這篇文章主要介紹了java生成csv文件亂碼的解決方法,大家可以直接看下面的示例
    2014-01-01
  • JVM中的守護線程示例詳解

    JVM中的守護線程示例詳解

    這篇文章主要給大家介紹了關(guān)于JVM中守護線程的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-01-01
  • 詳解java迭代器模式

    詳解java迭代器模式

    這篇文章主要介紹了java迭代器模式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • 5分鐘搞懂java注解@Annotation的具體使用

    5分鐘搞懂java注解@Annotation的具體使用

    這篇文章主要介紹了5分鐘搞懂java注解@Annotation的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • 淺析Java如何在Excel中添加或刪除分頁符

    淺析Java如何在Excel中添加或刪除分頁符

    一份排版精良、分頁合理的報表,不僅能提升專業(yè)度,更能確保信息的有效傳達,本文將向大家介紹如何使用 Spire.XLS for Java 在Java中實現(xiàn)Excel分頁符的添加與刪除,有需要的可以了解下
    2025-11-11
  • SparkStreaming整合Kafka過程詳解

    SparkStreaming整合Kafka過程詳解

    這篇文章主要介紹了SparkStreaming整合Kafka過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-01-01
  • maven如何利用springboot的配置文件進行多個環(huán)境的打包

    maven如何利用springboot的配置文件進行多個環(huán)境的打包

    這篇文章主要介紹了maven如何利用springboot的配置文件進行多個環(huán)境的打包,在Spring Boot中多環(huán)境配置文件名需要滿足application-{profiles.active}.properties的格式,其中{profiles.active}對應(yīng)你的環(huán)境標識,本文給大家詳細講解,需要的朋友可以參考下
    2023-02-02
  • Java FutureTask類使用案例解析

    Java FutureTask類使用案例解析

    這篇文章主要介紹了Java FutureTask類使用案例解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值析,需要的朋友可以參考下
    2020-04-04

最新評論

大厂| 乳山市| 商南县| 汉寿县| 新巴尔虎右旗| 大庆市| 武宣县| 建宁县| 伊通| 佛教| 兰州市| 永安市| 宝山区| 龙胜| 仁寿县| 太仓市| 鲁甸县| 武乡县| 敦化市| 通渭县| 杨浦区| 双桥区| 厦门市| 安乡县| 留坝县| 庆云县| 黎城县| 阿图什市| 仙桃市| 荣昌县| 大足县| 金溪县| 商都县| 衡南县| 通州区| 页游| 大竹县| 龙南县| 镇沅| 满洲里市| 乌海市|