Java 如何在iBatis中获得排序结果?

Java 如何在iBatis中获得排序结果?,java,sorting,hashmap,ibatis,Java,Sorting,Hashmap,Ibatis,我有一个表mgr\u employee,它有两列managerName和teamEmployee。虽然我在sql中进行排序,但在java中却得到了未排序的结果映射。如何获得排序映射?为什么iBatis会混淆结果图 <resultMap id="s_filter_defaults_ResultMap" class="java.util.HashMap"> <result property="key" column="managerName"/> <result

我有一个表mgr\u employee,它有两列managerName和teamEmployee。
虽然我在sql中进行排序,但在java中却得到了未排序的结果映射。
如何获得排序映射?为什么iBatis会混淆结果图

<resultMap id="s_filter_defaults_ResultMap" class="java.util.HashMap">
  <result property="key" column="managerName"/>
  <result property="value" column="count"/>
</resultMap>

<select id="mCount" parameterClass="java.util.HashMap" resultMap="mcount_ResultMap">
    <![CDATA[
     select managerName, count(teamEmployee) AS count
      from mgr_employee
      group by managerName 
      order by managerName;
    ]]>
</select>

调用上述sql的Java代码:

Map<String,Long> mCountMap = getSqlMapClientTemplate().queryForMap("mCount", "", "key", "value");
Map mCountMap=getSqlMapClientTemplate().queryForMap(“mCount”、“key”、“value”);
由于sql中的“order by”子句,mCountMap未按预期排序。
任何评论/建议,如何对结果映射进行排序?

我认为您的问题是由于映射不是有序结构:映射的键按其哈希代码的顺序存储。您需要做的是将映射的键放入向量中,然后对它们进行排序(或者让SQL为您排序,然后将它们插入向量中)。然后,您可以在vector上迭代并通过键访问映射。

A将确保按照添加项的顺序进行迭代,尝试使用该类,而不仅仅是一个普通的
HashMap
,它不维护迭代顺序。

我认为您的问题可能在于所使用的Java类型。需要查询列表,而不是映射,因为Java HashMap(我想这就是查询将返回的内容)不支持排序。
请参阅应返回所需内容的方法。

这不起作用。我必须按照A的建议做getQueryList。你能在这里复制修复程序吗。您是如何使用列表获取键值对的?