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

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

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

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

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

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

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

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

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

直接定義數(shù)組字段并無(wú)法實(shí)現(xiàn)數(shù)據(jù)存入和接受。還需要一個(gè)typeHandler。這個(gè)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一般放在項(xiàng)目的config目錄下。

實(shí)體類的定義如下:

@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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

    IntelliJ IDEA 中必有得插件和配置

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

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

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

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

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

    mybatis實(shí)體類字段大小寫(xiě)及字段獲取不到值問(wèn)題

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

    Java基于Scanner對(duì)象的簡(jiǎn)單輸入計(jì)算功能示例

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

    Java項(xiàng)目--家庭收支記錄程序

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

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

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

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

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

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

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

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

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

最新評(píng)論