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,
40 ReflectorFactory reflectorFactory) {
41 this.objectFactory = objectFactory;
42 this.objectWrapperFactory = objectWrapperFactory;
43 this.reflectorFactory = reflectorFactory;
44 this.mappedResults = objectFactory.create(Map.class);
45 this.mapKey = mapKey;
46 }
47
48 @Override
49 public void handleResult(ResultContext<? extends V> context) {
50 final V value = context.getResultObject();
51 final MetaObject mo = MetaObject.forObject(value, objectFactory, objectWrapperFactory, reflectorFactory);
52
53 final K key = (K) mo.getValue(mapKey);
54 mappedResults.put(key, value);
55 }
56
57 public Map<K, V> getMappedResults() {
58 return mappedResults;
59 }
60 }