mybatis中的mapkey

mybatis中有一个注解,虽然不能满足要求,但可以将就。

问题

有如下sql:

1
select service_role, count(asset_id) from asset_role group by service_role;

结果如下:

本来想使用如下方法映射:

1
2
3
4
Map<String, Integer> groupByServiceRole();

assertEquals(2, (long) map2.get("hadoop"));
assertEquals(1, (long) map2.get("spark"));

然而完全不是这样。这样返回的value还是个map。

mapkey

使用了mapkey注解后,返回的key还是个map,结果如下:

这样也好办,多加一级map:

1
2
3
4
5
6
@MapKey("service_role")
Map<String, Map<String, Object>> groupByServiceRole();

Map<String, Map<String, Object>> map2 = dao.groupByServiceRole();
assertEquals(2, (long) map2.get("hadoop").get("count"));
assertEquals(1, (long) map2.get("spark").get("count"));