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)文章
深入了解Maven Settings.xml文件的結(jié)構(gòu)和功能
這篇文章主要為大家介紹了Maven Settings.xml文件基本結(jié)構(gòu)和功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11IDEA下使用MyBatisCodeHelper插件的方法詳解
這篇文章主要介紹了IDEA下使用MyBatisCodeHelper插件的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09spring cloud 使用Hystrix 實(shí)現(xiàn)斷路器進(jìn)行服務(wù)容錯(cuò)保護(hù)的方法
本篇文章主要介紹了spring cloud 使用Hystrix 實(shí)現(xiàn)斷路器進(jìn)行服務(wù)容錯(cuò)保護(hù)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05java查找字符串中的包含子字符串的個(gè)數(shù)實(shí)現(xiàn)代碼
下面小編就為大家?guī)?lái)一篇java查找字符串中的包含子字符串的個(gè)數(shù)實(shí)現(xiàn)代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06@MapperScan掃描包里混有@Service等問(wèn)題如何解決
這篇文章主要介紹了@MapperScan掃描包里混有@Service等問(wèn)題如何解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03SpringBoot 在IDEA中實(shí)現(xiàn)熱部署步驟詳解(實(shí)用版)
這篇文章主要介紹了SpringBoot 在IDEA中實(shí)現(xiàn)熱部署步驟詳解(實(shí)用版),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12Feign?日期格式轉(zhuǎn)換錯(cuò)誤的問(wèn)題
這篇文章主要介紹了Feign?日期格式轉(zhuǎn)換錯(cuò)誤的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03