Java 如何在spring中查询postgres整数数组
我使用Java7和JDBC模板从PostgreSQL查询整数数组。我的代码如下: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
@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
字段)。