如何使用MyBatis计算行数并将结果作为Map?

时间:2018-03-21 13:02:15

标签: java mybatis

我正在努力解决标题中描述的问题。这是查询:

select state, count(state) from orders group by state;

我希望得到Map<String, Long>的结果如何使用myBatis实现它?我正在使用xml mapper。已经尝试使用resultType="hashmap"并获得此异常

  

TooManyResultsException:预期返回一个结果(或null)   通过selectOne(),但发现:3

在此处使用后stack sollution @MapKey("state")获取此异常

  

JsonGenerationException:JSON中不允许使用Null键(使用转换NullKeySerializer?)

我不明白,因为每个记录都填写了状态

有什么建议我做错了什么,怎么做对了?

最好的问候。

1 个答案:

答案 0 :(得分:0)

如果使用@MapKey("state"),则函数的返回类型将为Map<String, Map<String, Object>>,其中对于每个state值,将返回记录的映射。

在该记录映射中,键是列名。在您查询导致此问题的未命名列时。将您的查询更改为以下内容:

select state, count(state) cnt from orders group by state;