我不能在数据库中按顺序执行ORDER BY
答案 0 :(得分:9)
将结果解压缩为List<YourResultType>
并使用Collections.sort()
。如果您只需要按一个“自然”顺序排序,那么在结果类型本身中实现Comparable<T>
...否则每个排序顺序实现Comparator<T>
一次,并将相关比较器的实例传递给Collections.sort()
。
答案 1 :(得分:8)
您在数据库中执行ORDER BY
。
你应该重新评估为什么你不能这样做。如果有人问“如何用锤子插入螺丝?我不能使用螺丝刀”,不要说服螺丝刀在第一时间是正确的解决方案是不负责任的。
如果你真的,那么无法原生地订购结果集,那你就不走运了。它只是来自数据库的流,因此您必须将其全部读入临时List
,对该集合进行排序,然后从那里开始。对于较小的结果集,这可能不是一个问题,但对于较大的结果集,这可能会对效率造成相当大的影响。
答案 2 :(得分:2)
将数据从ResultSet中移出到您想要的任何对象表示中,然后对数据进行排序,就像在该点处的任何其他数据一样。
如果您使用Collections.Sort对复杂对象执行排序,则需要实现Comparator。
答案 3 :(得分:1)
可以在运行查询之前在数据库中对其进行排序,然后存储在resultSet中。
SELECT * FROM tableName ORDER BY columnName ASC
你想要这样的东西吗?
答案 4 :(得分:0)
看起来您必须负责使用自定义对象实现ResultSet接口,该对象将为您提供您正在寻找的功能....抱歉。
答案 5 :(得分:0)
这可以在查询本身中解决。您按计算列排序。您计算的列将自然值转换为可以按数字或字母顺序排序的值。您可以定义“转换”函数并在order by子句中调用该函数。
在某种程度上,无论是在代码中还是在数据库中,都必须进行自然到数字转换。算法无论在何处运行都是算法。