java - 如何从结果映射整数列表

标签 java spring jdbc

我正在使用java 7和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);

我的 item_list 列是 postgresql 中的整数[]。但是当我尝试这样做时,它会抛出一个错误:类型 int psql 异常的错误值

感谢任何帮助

最佳答案

您可以使用java.sql.Array

如果你只想获取整数数组,你可以这样尝试

String SQL = "select item_list from public.items where item_id=1";
Array l = template.queryForObject(SQL, Array.class);
List<Integer> list = Arrays.asList((Integer[]) l.getArray());

或者使用RowMapper

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 类:

class Foo {
    private String name;
    private List<Integer> integers;

    public String getName() {
        return name;
    }
    // ...
}

关于java - 如何从结果映射整数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45416597/

相关文章:

jpa - eclipselink连接池

java - 来自 Oracle PL/SQL 存储过程的 JDBC 结果集

mysql - 什么是高并发的bonecp好配置

java - 在创建 mimeMessage 后的电子邮件时设置返回路径

java - 如何解决无限递归(org.codehaus.jackson.map.JsonMappingException)

java - 使用 SpEL 表达式和 PropertyPlaceHolder 设置 Spring bean 类名

java - Spring Cache - @CachePut 和 @CacheEvict 之间的真正区别

java - JTree 项中的 setPreferredSize 为零会导致渲染性能不佳

java - 为什么Java中的main方法总是需要参数?

html - Thymeleaf 中的算术运算