Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在spring中查询postgres整数数组_Java_Spring_Postgresql_Jdbctemplate - Fatal编程技术网

Java 如何在spring中查询postgres整数数组

Java 如何在spring中查询postgres整数数组,java,spring,postgresql,jdbctemplate,Java,Spring,Postgresql,Jdbctemplate,我使用Java7和JDBC模板从PostgreSQL查询整数数组。我的代码如下: @Autowired private JdbcTemplate jdbcTemp; String SQL = "select item_list from public.items where item_id=1"; List<Integer> ListOfitems=jdbcTemp.queryForList(SQL , Integer.class); List<Array> Lis

我使用Java7和JDBC模板从PostgreSQL查询整数数组。我的代码如下:

@Autowired
private JdbcTemplate jdbcTemp;

String SQL = "select item_list from public.items where item_id=1";
List<Integer> ListOfitems=jdbcTemp.queryForList(SQL , Integer.class);
List<Array>  ListOfitems=jdbcTemp.queryForList(SQL , java.sql.Array.class);
但它仍然抛出相同的异常

List<Array>  ListOfitems=jdbcTemp.queryForList(SQL , java.sql.Array.class);

非常感谢您的帮助。

经过多次尝试和错误,成功了

List<Array>  ListOfitems=jdbcTemp.queryForList(SQL , java.sql.Array.class);
ListOfitems=jdbcTemp.queryForList(SQL,java.SQL.Array.class);

所以基本上postgres数组等于java sql数组类型。希望它能帮助任何人:)

经过大量的尝试和错误,这就成功了

List<Array>  ListOfitems=jdbcTemp.queryForList(SQL , java.sql.Array.class);
ListOfitems=jdbcTemp.queryForList(SQL,java.SQL.Array.class);

因此,基本上postgres数组等于java sql数组类型。希望它对任何人都有帮助:)

要获取单行的数组字段,它应该类似于:

List<Array>  ListOfitems=jdbcTemp.queryForList(SQL , java.sql.Array.class);
import java.sql.Array;

...

final String sqlQuery = "...";
final Array itemListArray = jdbcTemplate.queryForObject(sqlQuery, Array.class);
请注意,方法调用可能引发异常:

List<Array>  ListOfitems=jdbcTemp.queryForList(SQL , java.sql.Array.class);
IncorrectResultSizeDataAccessException
-如果查询没有准确返回一行,或者没有准确返回该行中的一列

List<Array>  ListOfitems=jdbcTemp.queryForList(SQL , java.sql.Array.class);
-

List<Array>  ListOfitems=jdbcTemp.queryForList(SQL , java.sql.Array.class);

要获取单行的数组字段,它应该类似于:

List<Array>  ListOfitems=jdbcTemp.queryForList(SQL , java.sql.Array.class);
import java.sql.Array;

...

final String sqlQuery = "...";
final Array itemListArray = jdbcTemplate.queryForObject(sqlQuery, Array.class);
请注意,方法调用可能引发异常:

List<Array>  ListOfitems=jdbcTemp.queryForList(SQL , java.sql.Array.class);
IncorrectResultSizeDataAccessException
-如果查询没有准确返回一行,或者没有准确返回该行中的一列

List<Array>  ListOfitems=jdbcTemp.queryForList(SQL , java.sql.Array.class);
-

List<Array>  ListOfitems=jdbcTemp.queryForList(SQL , java.sql.Array.class);
你可以用

List<Array>  ListOfitems=jdbcTemp.queryForList(SQL , java.sql.Array.class);
若您只想获得整数数组,可以这样尝试(若结果包含一行,则有效):

List<Array>  ListOfitems=jdbcTemp.queryForList(SQL , java.sql.Array.class);
String SQL=“从public.items中选择item\u列表,其中item\u id=1”;
Array l=template.queryForObject(SQL,Array.class);
List List=Arrays.asList((Integer[])l.getArray();
或者使用行映射器

List<Array>  ListOfitems=jdbcTemp.queryForList(SQL , java.sql.Array.class);
Foo foo = template.queryForObject(SQL, new RowMapper<Foo>(){
        @Override
        public Foo mapRow(ResultSet rs, int rowNum) throws SQLException {
            Foo foo = new Foo();
            foo.setName(rs.getString("name"));
            foo.setIntegers(Arrays.asList((Integer[]) rs.getArray("item_list").getArray()));
            return foo;
        }
    });
Foo-Foo=template.queryForObject(SQL,新的行映射器(){
@凌驾
public Foo mapRow(ResultSet rs,int rowNum)抛出SQLException{
Foo-Foo=新的Foo();
foo.setName(rs.getString(“name”);
setIntegers(Arrays.asList((Integer[])rs.getArray(“item_list”).getArray());
返回foo;
}
});
Foo类:

List<Array>  ListOfitems=jdbcTemp.queryForList(SQL , java.sql.Array.class);
class Foo {
    private String name;
    private List<Integer> integers;

    public String getName() {
        return name;
    }
    // ...
}
class-Foo{
私有字符串名称;
私有列表整数;
公共字符串getName(){
返回名称;
}
// ...
}
您可以使用

List<Array>  ListOfitems=jdbcTemp.queryForList(SQL , java.sql.Array.class);
若您只想获得整数数组,可以这样尝试(若结果包含一行,则有效):

List<Array>  ListOfitems=jdbcTemp.queryForList(SQL , java.sql.Array.class);
String SQL=“从public.items中选择item\u列表,其中item\u id=1”;
Array l=template.queryForObject(SQL,Array.class);
List List=Arrays.asList((Integer[])l.getArray();
或者使用行映射器

List<Array>  ListOfitems=jdbcTemp.queryForList(SQL , java.sql.Array.class);
Foo foo = template.queryForObject(SQL, new RowMapper<Foo>(){
        @Override
        public Foo mapRow(ResultSet rs, int rowNum) throws SQLException {
            Foo foo = new Foo();
            foo.setName(rs.getString("name"));
            foo.setIntegers(Arrays.asList((Integer[]) rs.getArray("item_list").getArray()));
            return foo;
        }
    });
Foo-Foo=template.queryForObject(SQL,新的行映射器(){
@凌驾
public Foo mapRow(ResultSet rs,int rowNum)抛出SQLException{
Foo-Foo=新的Foo();
foo.setName(rs.getString(“name”);
setIntegers(Arrays.asList((Integer[])rs.getArray(“item_list”).getArray());
返回foo;
}
});
Foo类:

List<Array>  ListOfitems=jdbcTemp.queryForList(SQL , java.sql.Array.class);
class Foo {
    private String name;
    private List<Integer> integers;

    public String getName() {
        return name;
    }
    // ...
}
class-Foo{
私有字符串名称;
私有列表整数;
公共字符串getName(){
返回名称;
}
// ...
}

看看这个谢谢,但我知道如何通过准备语句和连接进行检索。我在这里面临的问题是在使用JDBC Termplate时映射到正确的类类型。看看这个谢谢,但我知道如何通过准备语句和连接进行检索。我在这里面临的问题是在使用JDBC Termplate一个简单的问题是itemListArray数组还是List?
Array
java.sql.Array
)。因为您似乎想选择通过其主键(
item\u id
字段)找到的单行的数组字段(
item\u list
)。一个简单的问题是itemListArray数组或list?
array
java.sql.array
)。因为您似乎希望选择通过其主键找到的单行的数组字段(
item\u list
)(
item\u id
字段)。