1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.ibatis.executor.result;
17
18 import java.util.Map;
19
20 import org.apache.ibatis.reflection.MetaObject;
21 import org.apache.ibatis.reflection.ReflectorFactory;
22 import org.apache.ibatis.reflection.factory.ObjectFactory;
23 import org.apache.ibatis.reflection.wrapper.ObjectWrapperFactory;
24 import org.apache.ibatis.session.ResultContext;
25 import org.apache.ibatis.session.ResultHandler;
26
27
28
29
30 public class DefaultMapResultHandler<K, V> implements ResultHandler<V> {
31
32 private final Map<K, V> mappedResults;
33 private final String mapKey;
34 private final ObjectFactory objectFactory;
35 private final ObjectWrapperFactory objectWrapperFactory;
36 private final ReflectorFactory reflectorFactory;
37
38 @SuppressWarnings("unchecked")
39 public DefaultMapResultHandler(String mapKey, ObjectFactory objectFactory, ObjectWrapperFactory objectWrapperFactory, ReflectorFactory reflectorFactory) {
40 this.objectFactory = objectFactory;
41 this.objectWrapperFactory = objectWrapperFactory;
42 this.reflectorFactory = reflectorFactory;
43 this.mappedResults = objectFactory.create(Map.class);
44 this.mapKey = mapKey;
45 }
46
47 @Override
48 public void handleResult(ResultContext<? extends V> context) {
49 final V value = context.getResultObject();
50 final MetaObject mo = MetaObject.forObject(value, objectFactory, objectWrapperFactory, reflectorFactory);
51
52 final K key = (K) mo.getValue(mapKey);
53 mappedResults.put(key, value);
54 }
55
56 public Map<K, V> getMappedResults() {
57 return mappedResults;
58 }
59 }