是否有任何方法可以从NamedParameterJdbcTemplate返回可选的?
我的查询有时会返回空。所以我想要漂亮的方法来检查空。我不想做尝试捕捉空结果数据访问异常,因为这个有点丑。
据我所知,您的问题似乎是您的结果集有时可能完全为空,因此这与返回为null的值无关,而是一开始就没有任何结果,因此您为什么要提到EmptyResultDataAccessException。在我的回答中,我假设你只对第一个结果感兴趣,否则它就没有意义了。
在NamedParameterJdbcTemplate中没有直接的方法,但可以使用lambdas来实现。具体来说,您可以获得所有结果的列表,然后使用stream()。findAny()
获取可选的。
多多少少会这样:
Optional<Integer> values = namedParameterJdbcTemplate.queryForList(...)
.stream()
.map(m -> (Integer)m.get("MY_COLUMN"))
.findAny();
在执行上述操作时,您可能希望限制查询将返回的结果数量,否则可能会给网络和服务器内存带来过度压力。根据数据库技术,有SQL子句,如LIMIT
和OFFSET
(请参阅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<Integer> v = Optional<Integer>.ofNullable(namedParameterJdbcTemplate.queryForObject(...));
虽然运行与SQL查询相同的查询并获取结果,但在ifCurrent中未获取任何结果。 我是否传递了错误的参数? 这就是在学校里通过的
在Spring的NamedParameterJdbcTemplate中。如何使用Spring版本3.1查询以执行“Select*from Student”以返回列表,而不提供任何参数。x 根据http://docs.spring.io/spring/docs/3.1.2.RELEASE/javadoc-api/org/springframework/jdbc/core/namedparam/Nam
我试图模拟一个对象,该对象返回一个带有Mockito的Java可选对象: 当被调用,它返回。 我希望方法返回 返回的任何原因? 方法如下: 以下是Junit:
问题内容: 如何通过使用和避免返回值? 例: 问题答案: 要返回可选值的值,或者返回默认值(如果可选值没有值),则可以使用。 请注意,我重写了查找最长名称的代码:您可以直接与比较器比较每个String的长度。可以通过调用键提取器作为方法引用来获得一个这样的比较器。
我知道你不能从返回,所以这个例子不起作用: 其中,可以返回有效字符串或空可选字符串。我所做的工作是: 这是更长的,并没有太大的不同,只是检查空值摆在首位。我觉得必须有一个更简洁的方式使用可选。
我注意到,如果没有where(),returning()操作不可用。这是故意的吗? 这项工作: 这不起作用: 我应该考虑这个“黑客”吗?