Java MyBatis 返回类型

返回单个结果

Map

1
2
3
<select id="selectMap" resultType="java.util.Map">
SELECT id, name, email FROM user LIMIT 1
</select>
1
2
@MapKey("id")
Map<Long, Object> selectMap();
1
2
3
4
5
@Test
public void selectMap() {
Map<Long, Object> map = mapper.selectMap();
System.out.println(JSON.toJSONString(map));
}

返回结果

1
{"1":{"name":"ifan","id":1,"email":"ifan@qq.com"}}

LinkedHashMap

1
2
3
<select id="selectLinkedHashMap" resultType="java.util.LinkedHashMap">
SELECT id, name, email FROM user LIMIT 1
</select>
1
LinkedHashMap<String, Object> selectLinkedHashMap();  
1
LinkedHashMap<String, Object> linkedHashMap = mapper.selectLinkedHashMap();

返回结果

1
{"id":1,"name":"ifan","email":"ifan@qq.com"}

返回多个结果

List<Map>

1
2
3
<select id="selectMapList" resultType="java.util.Map">
SELECT id, name, email FROM user LIMIT 1
</select>
1
List<Map<String, Object>> selectMapList();
1
List<Map<String, Object>> maps = mapper.selectMapList();

返回结果

1
2
3
4
5
[
{"id":1,"name":"ifan","email":"ifan@qq.com"}
{"id":2,"name":"ifan","email":"ifan@qq.com"}
{"id":3,"name":"ifan","email":"ifan@qq.com"}
]

Map<Map>

1
2
3
<select id="selectMapMap" resultType="java.util.Map">
SELECT id, name, email FROM user LIMIT 1
</select>
1
2
@MapKey("id")
Map<String, Map<String, Object>> selectMapMap();
1
Map<String, Map<String, Object>> stringMapMap = mapper.selectMapMap();

返回结果

1
2
3
4
5
{
"1":{"id":1,"name":"ifan","email":"ifan@qq.com"},
"2":{"id":2,"name":"ifan","email":"ifan@qq.com"},
"3":{"id":3,"name":"ifan","email":"ifan@qq.com"},
}

List<LinkedHashMap>

1
2
3
<select id="selectListLinkedHashMap" resultType="java.util.LinkedHashMap">
SELECT id, name, email FROM user LIMIT 1
</select>
1
List<LinkedHashMap<String, Object>> selectListLinkedHashMap();    
1
List<LinkedHashMap<String, Object>> linkedHashMap = mapper.selectListLinkedHashMap();
1
2
3
4
5
[
{"id":1,"name":"ifan","email":"ifan@qq.com"},
{"id":2,"name":"ifan","email":"ifan@qq.com"},
{"id":3,"name":"ifan","email":"ifan@qq.com"},
]

Map<LinkedHashMap>

1
2
3
<select id="selectMapLinkedHashMap" resultType="java.util.LinkedHashMap">
SELECT id, name, email FROM user LIMIT 1
</select>
1
2
@MapKey("id")
Map<String, LinkedHashMap<String, Object>> selectMapLinkedHashMap();
1
Map<String, LinkedHashMap<String, Object>> mapLinkedHashMaps = mapper.selectMapLinkedHashMap();
1
2
3
4
5
{
"1":{"id":1,"name":"ifan","email":"ifan@qq.com"},
"2":{"id":2,"name":"ifan","email":"ifan@qq.com"},
"3":{"id":3,"name":"ifan","email":"ifan@qq.com"},
}

List<Pair<Integer, Long>>

1
2
3
<select id="countByAuthor" resultType="javafx.util.Pair">
SELECT id, name, email FROM user LIMIT 1
</select>
1
List<Pair<Integer, Long>> countByAuthor();
1
2
List<Pair<Integer, Long>> list = mapper.countByAuthor();
Map<Integer, Long> map = list.stream().collect(Collectors.toMap(Pair::getKey, Pair::getValue));

返回结果

1
{"ifan": 1, "fan":2}