- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有办法从NamedParameterJdbcTemplate返回Optional?
我的查询有时会返回空。所以我想要一种漂亮的方法来检查是否为空。我不想对 EmptyResultDataAccessException 进行 try catch,因为这有点难看。
最佳答案
据我了解,您的问题似乎是您的 ResultSet
有时可能完全为空,因此这与返回为 null
的值无关,而是没有任何值结果排在第一位,这就是为什么你提到EmptyResultDataAccessException
。在我的回答中,我假设您只对第一个结果感兴趣,否则它就没有意义。
NamedParameterJdbcTemplate 中没有可用的直接方法,但您可以使用 lambda 来实现。具体来说,您可以获取所有结果的列表,然后使用 stream().findAny()
获取 Optional
。
或多或少,它会像这样:
Optional<Integer> values = namedParameterJdbcTemplate.queryForList(...)
.stream()
.map(m -> (Integer)m.get("MY_COLUMN"))
.findAny();
在执行上述操作时,您可能希望限制查询将返回的结果数量,否则可能会给网络和服务器内存带来过大的压力。根据数据库技术的不同,有诸如 LIMIT
和 OFFSET
之类的 SQL 子句(对于 Postgres,请参见 https://www.postgresql.org/docs/8.1/queries-limit.html;对于 MySQL,请参见 https://dev.mysql.com/doc/refman/5.5/en/limit-optimization.html)来帮助您完成任务。
但是需要注意的是,如果您的查询一开始就返回多行,那么您实际上会丢弃一些数据,因此假设您一开始就做错了可能会更安全(在换句话说:您必须确保您的查询始终返回零个或一个结果。
<小时/>假设您总是只有一行一列,但返回值为 null,则获取 Optional
的最简单方法是将调用包装在 Optional.ofNullable 中
。示例(伪代码,只是为了了解要点):
Optional<Integer> v = Optional<Integer>.ofNullable(namedParameterJdbcTemplate.queryForObject(...));
关于java - NamedParameterJdbcTemplate 返回可选<Integer>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59318576/
我们使用的是 Spring 2.6,我们在系统中使用 jdbcTemplate 和 NamedparameterJdbcTemplate,配置如下。 j
我编写了一个方法来使用 NamedParameterJdbcTemplate 检索条目列表: public final Map findAll(final Collection keys) {
我正在尝试在我的 springs 应用程序中查询 sql。现在,如果我的代码包含类似的内容 - String sql="select abc,def from alphabets where char
我正在使用 Java 中的 NamedParameterJdbcTemplate 运行一个简单的 mysql 查询。 问题是我的 java 查询正在为 count 字段返回二进制值,即 1 代表所有非
我正在处理一个问题,该问题涉及编写一个查询以从数据库中获取几千条记录。我将使用的查询将在 WHERE 条件中包含 2 个 IN 子句。 据我所知,这可能是有限的,请纠正我,对于这个用例,我不能使用 j
我正在使用超酷的 jdbcTemplate(更具体地说是 NamedParameterJdbcTemplate)来运行带有 IN 子句的查询。然而,我希望查询的列表是一个枚举,因此我收到错误:“转换中
我是 Spring 新手,正在尝试编写一个使用 NamedParameterJdbcTemplate 的简单测试方法。这是: public String test() { String que
是否有办法利用 NamedParameterJdbcTemplate 而不是使用 SpringJdbcMigration 实现中的标准 JdbcTemplate 创建飞路迁移类? 我需要运行一个升级,
有没有办法设置 Spring 的 NamedParameterJdbcTemplate 对象的批量大小? 我在我的项目中遇到了一些 OutOfMemory 问题,但我能够通过在较小块的循环中调用 Na
在 Spring 的 NamedParameterJdbcTemplate 中。我如何使用 Spring 3.1.x 版查询执行“Select * from Student”以返回列表而不提供任何参数
我正在开发一个需要对 Oracle 数据库进行 JDBC 调用的项目。我已经设置了 UCP 池来与 SpringJDBC 一起使用。我有一个相当简单的查询,我正在执行如下... 从表中选择 *,其中
我想更改 NamedParameterJdbcTemplate 的结果集行为。 (禁用结果集缓存) 例如,使用 postgres jdbc 驱动程序,您可以像这样更改它: conn =
有没有办法从NamedParameterJdbcTemplate返回Optional? 我的查询有时会返回空。所以我想要一种漂亮的方法来检查是否为空。我不想对 EmptyResultDataAcces
我的代码是这样的: NamedParameterJdbcTemplate stmt; String sql = "INSERT INTO ....."; // named = ...; ... st
我正在尝试使用带有 NamedParameterJdbcTemplate 的映射参数调用存储过程(Spring 3.0),但由于某些奇怪的原因,某些值没有传递给存储过程(Oracle 11.2)! 相
在 Spring 的引用文档中,类型“NamedParameterTemplate”被引用为进行批量更新的简单方法: http://docs.spring.io/spring/docs/current
我在 Spring 中使用 NamedParameterJDBCTemplate 并尝试仅选择少数列而不是所有列。但我面临一个错误 - org.SpringFramework.BadSqlGramma
尝试更新表中的多个列值。 我缺少什么,一点帮助! dao 方法就像... dao 类 Plan 的所有字段都填充了适当的数据。 public void updatePlan(Plan plan) {
我正在使用 Spring 框架。使用 NamedParameterJdbcTemplate 时如何设置查询超时?我注意到 JdbcTemplate 有一个 setQueryTimeout(int qu
我在 TomCat 服务器上部署了一个 Spring MVC 项目,但我一直遇到与数据库的连接问题。几个小时后,当用户尝试登录时,他们将遇到 500 错误和此消息: HTTP Status 500 -
我是一名优秀的程序员,十分优秀!