最近一个项目要进行重构,需要把之前的ibatis转为mybatis,其中有几个方法是需要返回一个Map对象,我就到网上找方法,但找了半天,发现网上的好多都是同时指定Map的Key和Value,但现在项目需求是指指定Key值,而Value为实体类,于是我就把网上的方法进行了改善,代码如下:
1、MapParam.java
需要mybatis返回Map时需要指定参数类型为MapParam,可以通过构造函数单独指定Key,也可以同时指定Key和Value属性。
public class MapParam extends HashMap<String, Object> {
private static final long serialVersionUID = 1L;
private static final String KEY_FIELD = "_mapKeyField_";
private static final String VALUE_FIELD = "_mapValueField_";
public MapParam(String keyField) {
this.put(KEY_FIELD, keyField);
}
public MapParam(String keyField, String valueField) {
this.put(KEY_FIELD, keyField);
this.put(VALUE_FIELD, valueField);
}
public String getKeyField() {
return (String)this.get(KEY_FIELD);
}
public String getValueField() {
return (String)this.get(VALUE_FIELD);
}
}