diff --git a/src/main/java/org/apache/ibatis/reflection/wrapper/MapWrapper.java b/src/main/java/org/apache/ibatis/reflection/wrapper/MapWrapper.java index 374b03e65b6..496241b7091 100644 --- a/src/main/java/org/apache/ibatis/reflection/wrapper/MapWrapper.java +++ b/src/main/java/org/apache/ibatis/reflection/wrapper/MapWrapper.java @@ -15,20 +15,23 @@ */ package org.apache.ibatis.reflection.wrapper; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - import org.apache.ibatis.reflection.MetaObject; import org.apache.ibatis.reflection.SystemMetaObject; import org.apache.ibatis.reflection.factory.ObjectFactory; import org.apache.ibatis.reflection.property.PropertyTokenizer; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Pattern; + /** * @author Clinton Begin */ public class MapWrapper extends BaseWrapper { + private static final String regex = "^\\d+$"; + private Pattern pattern = Pattern.compile(regex); private final Map map; public MapWrapper(MetaObject metaObject, Map map) { @@ -48,6 +51,11 @@ public Object get(PropertyTokenizer prop) { @Override public void set(PropertyTokenizer prop, Object value) { if (prop.getIndex() != null) { + // issue#3062 column alias name contain "[]" + if (!pattern.matcher(prop.getIndex()).matches()) { + map.put(prop.getIndexedName(), value); + return; + } Object collection = resolveCollection(prop, map); setCollectionValue(prop, collection, value); } else { @@ -134,7 +142,7 @@ public MetaObject instantiatePropertyValue(String name, PropertyTokenizer prop, HashMap map = new HashMap<>(); set(prop, map); return MetaObject.forObject(map, metaObject.getObjectFactory(), metaObject.getObjectWrapperFactory(), - metaObject.getReflectorFactory()); + metaObject.getReflectorFactory()); } @Override