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

Java postgresql數(shù)組字段類型處理方法詳解

 更新時間:2022年10月17日 10:23:03   作者:一根頭發(fā)學(xué)一年  
這篇文章主要介紹了Java postgresql數(shù)組字段類型處理方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

在實際開發(fā)中遇到postgresql中定義的數(shù)組字段,下面解決兩個問題,如何定義數(shù)組字段的默認(rèn)值為空格數(shù)組,以及如何再java實體類中直接使用數(shù)組對象接受數(shù)據(jù)或把數(shù)據(jù)存入數(shù)據(jù)庫。

1.在postgresql中定義數(shù)組對象及默認(rèn)值

以字符串你數(shù)組為例:

比如一個字段用于存儲多張圖片的url,可以使用一下sql定義

pictures _varchar NOT NUll default ARRAY[]::character varying[]

2.實體類存入數(shù)組到數(shù)據(jù)庫并接受數(shù)據(jù)庫的數(shù)組數(shù)據(jù)

直接定義數(shù)組字段并無法實現(xiàn)數(shù)據(jù)存入和接受。還需要一個typeHandler。這個typeHandler是自定的,而且整型數(shù)組和字符串?dāng)?shù)組不一樣,下面以字符串?dāng)?shù)組為例。

typeHandler類如下:

import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import java.sql.*;
import java.util.List;
public class StringListArrayTypeHandler extends BaseTypeHandler<List<String>> {
    @Override
    public void setNonNullParameter(PreparedStatement preparedStatement, int i, List<String> strings, JdbcType jdbcType) throws SQLException {
        if (strings != null) {
            Array array = preparedStatement.getConnection().createArrayOf(JdbcType.VARCHAR.name(), strings.toArray(new String[0]));
            preparedStatement.setArray(i, array);
        }
    }
    @Override
    public List<String> getNullableResult(ResultSet resultSet, String s) throws SQLException {
        Array array = resultSet.getArray(s);
        if (array == null) {
            return null;
        }
        String[] result = (String[]) array.getArray();
        array.free();
        return List.of(result);
    }
    @Override
    public List<String> getNullableResult(ResultSet resultSet, int i) throws SQLException {
        Array array = resultSet.getArray(i);
        if (array == null) {
            return null;
        }
        String[] result = (String[]) array.getArray();
        array.free();
        return List.of(result);
    }
    @Override
    public List<String> getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
        Array array = callableStatement.getArray(i);
        if (array == null) {
            return null;
        }
        String[] result = (String[]) array.getArray();
        array.free();
        return List.of(result);
    }
}

typeHandler一般放在項目的config目錄下。

實體類的定義如下:

@TableName(autoResultMap = true)
public class Entity implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(type = IdType.AUTO)
    private Long id;
    private String code;
    private String name;
    /**
     * 圖片
     */
    @TableField(typeHandler = StringListArrayTypeHandler.class)
    private List<String> pictures;
}

注意注解@TableName(autoResultMap = true)也要加上。

附加整型數(shù)組的typeHandler:

import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import java.sql.*;
import java.util.Collections;
import java.util.List;
public class IntegerListArrayTypeHandler extends BaseTypeHandler<List<Integer>> {
    @Override
    public void setNonNullParameter(PreparedStatement preparedStatement, int i, List<Integer> integers, JdbcType jdbcType) throws SQLException {
        if (integers != null) {
            Array array = preparedStatement.getConnection().createArrayOf(JdbcType.INTEGER.name(), integers.toArray(new Integer[0]));
            preparedStatement.setArray(i, array);
        }
    }
    @Override
    public List<Integer> getNullableResult(ResultSet resultSet, String s) throws SQLException {
        Array array = resultSet.getArray(s);
        if (array == null) {
            return null;
        }
        Integer[] result = (Integer[]) array.getArray();
        array.free();
        return List.of(result);
    }
    @Override
    public List<Integer> getNullableResult(ResultSet resultSet, int i) throws SQLException {
        Array array = resultSet.getArray(i);
        if (array == null) {
            return null;
        }
        Integer[] result = (Integer[]) array.getArray();
        array.free();
        return List.of(result);
    }
    @Override
    public List<Integer> getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
        Array array = callableStatement.getArray(i);
        if (array == null) {
            return null;
        }
        Integer[] result = (Integer[]) array.getArray();
        array.free();
        return List.of(result);
    }
}

到此這篇關(guān)于Java postgresql數(shù)組字段類型處理方法詳解的文章就介紹到這了,更多相關(guān)Java postgresql內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • IntelliJ IDEA 中必有得插件和配置

    IntelliJ IDEA 中必有得插件和配置

    這篇文章主要介紹了IntelliJ IDEA 中必有得插件和配置,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • java排查一個線上死循環(huán)cpu暴漲的過程分析

    java排查一個線上死循環(huán)cpu暴漲的過程分析

    這篇文章主要介紹了java排查一個線上死循環(huán)cpu暴漲的過程分析,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 關(guān)于Maven的使用,這些你都真的了解么

    關(guān)于Maven的使用,這些你都真的了解么

    這篇文章主要介紹了關(guān)于Maven的使用,這些你都真的了解么?具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • mybatis實體類字段大小寫及字段獲取不到值問題

    mybatis實體類字段大小寫及字段獲取不到值問題

    這篇文章主要介紹了mybatis實體類字段大小寫及字段獲取不到值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java基于Scanner對象的簡單輸入計算功能示例

    Java基于Scanner對象的簡單輸入計算功能示例

    這篇文章主要介紹了Java基于Scanner對象的簡單輸入計算功能,結(jié)合實例形式分析了Java使用Scanner對象獲取用戶輸入半徑值計算圓形面積功能,需要的朋友可以參考下
    2018-01-01
  • Java項目--家庭收支記錄程序

    Java項目--家庭收支記錄程序

    本文主要介紹Java基礎(chǔ)階段的一個小項目——家庭收支記錄程序(附完整源代碼),本項目所用到的主要知識點:基本語法、數(shù)組和方法。本項目并不難,主要是對Java初學(xué)者的基礎(chǔ)綜合運用的訓(xùn)練及檢驗
    2021-07-07
  • springboot vue完成編輯頁面發(fā)送接口請求功能

    springboot vue完成編輯頁面發(fā)送接口請求功能

    這篇文章主要為大家介紹了springboot+vue完成編輯頁發(fā)送接口請求功能,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • idea直接修改新的git地址的方法(圖文)

    idea直接修改新的git地址的方法(圖文)

    這篇文章主要介紹了idea直接修改新的git地址的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 如何去除Java中List集合中的重復(fù)數(shù)據(jù)

    如何去除Java中List集合中的重復(fù)數(shù)據(jù)

    這篇文章主要介紹了Java中List集合去除重復(fù)數(shù)據(jù)的方法,對大家的工作或?qū)W習(xí)有一定價值,有需求的朋友可以參考下
    2020-05-05
  • Spring中的事務(wù)隔離級別的介紹

    Spring中的事務(wù)隔離級別的介紹

    今天小編就為大家分享一篇關(guān)于Spring中的事務(wù)隔離級別的介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01

最新評論