java - jdbcTemplate query() 保证保持结果集顺序?

标签 java spring sorting jdbctemplate

我的问题与此处提出的问题类似:http://forum.springsource.org/showthread.php?84508-jdbctemplate.query()-sorted-result-set但没有提供明确的答案 - ArrayList 不能保证顺序。

基本上,我想知道 jdbcTemplate.query() 返回的调用是否保证结果集的顺序,以及我是否可以将其转储到 LinkedList 中,并且传递它:)

谢谢!

编辑:我应该澄清一下,查询确实包含一个 order by 子句,因此我需要一个保证顺序的结果集。关于 ArrayList 没有这样做,我是不正确的。由于 jdbcTemplate 是一个接口(interface),因此实现将取决于 db 库。为了安全起见,我应该假设将使用 ArrayList 还是再次对其进行排序?

最佳答案

an ArrayList does not guarantee order.

这是错误的。 ArrayList 确实保证顺序。它有一个 get(int index) 方法,可用于从指定的基于 0 的索引中检索元素。 add(T item) 方法会将它们按顺序添加到列表中。您可能会将 List 集合类型与 Set 接口(interface)混淆,后者与 List 类似,只是它不保证顺序。

也就是说,它实际上并没有回答你的问题......

ResultSet 没有指定的顺序,将按表的自然 顺序返回数据。这通常基于 PK 字段,但并非所有 DBMS 都如此。

如果顺序很重要,请明确说明。即使它现在以所需的顺序返回,对 DB 模式的更改也可能会在以后影响它并破坏您的代码所做的假设。明确的更好,并且会更清楚地表达代码的意图。

从编辑更新到问题: 如果在查询中指定了 order by,则可以 100% 依赖结果集的顺序。无需重新排序。

关于java - jdbcTemplate query() 保证保持结果集顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6270213/

相关文章:

java - 设置背景颜色时应用程序崩溃

java - java中整数排序首先返回负数?

spring - @Param 在 Spring Data JPA 中不起作用

java - 从 HttpServletRequest 获取目标 Controller

ios - 如何根据不同 NSArray 中的相同对象顺序将 NSArray 项目分组?

java - 这个递归是如何工作的

java - 为什么语言设计者使用尖括号而不是圆括号?

spring - request.getServletPath() 从 Spring MVC 返回 null

java - 对 map 中的日期字符串进行排序

python - 对 pandas 系列中的日期数据进行排序