gpt4 book ai didi

java - JDBC RowMapper 和转换

转载 作者:行者123 更新时间:2023-12-02 08:11:13 29 4
gpt4 key购买 nike

我在 JDBC 中使用 RowMappers 时遇到问题(尤其是 ParameterizedSingleColumnRowMapper):

我正在使用以下命令从数据库中查询现有 ID 列表:

List<Long> existingIds = DS.getJdbcTemplate().query(sql,
new ParameterizedSingleColumnRowMapper<Long>());

唯一的问题是我的列表有时不包含预期的长度:

// for some value...
System.out.println(existingIds.get(0) instanceof Long); // return FALSE
System.out.println((Object)existingIds.get(0) instanceof Integer); // return TRUE

我可以通过existingIds并将值重新转换为long,但我希望行映射器能够做到这一点(我猜ParameterizedSingleColumnRowMapper正在使用 getLong 或类似的东西,通常它会尝试转换为所需的值)。

您有任何解释或想法来解决这个问题吗?

预先感谢您的帮助。

最佳答案

您需要执行ParameterizedSingleColumnRowMapper.newInstance(Long.class)。只是直接创建一个新实例意味着它不正确地知道类型(它无法从泛型中推断出它,因为它们在编译时被删除),所以它可能只是执行 .getObject() ,将受到 JDBC 驱动程序的支配。

关于java - JDBC RowMapper 和转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7389804/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com