MyBatis:如何返回自定义地图

时间:2017-08-20 07:57:46

标签: spring-mybatis

这是我的表:

CREATE TABLE `constant` (
  `type` varchar(45) NOT NULL,
  `param` varchar(45) NOT NULL,
  `value` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`type`,`param`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

我希望将param作为map键,将值作为map值,但是对于获得一个简单的方法有点困惑。

我的代码:

@Select("select param, value from constant where type = #{type}")
@MapKey("param")
Map<String, String> getConstantByType(@Param("type") String type);

1 个答案:

答案 0 :(得分:1)

您必须创建一个结果处理程序才能工作。

调用方法时传递结果处理程序

ResultHandler类:

public class SomeResultHandler implements ResultHandler<Object> {


private Map<String, String> map = new HashMap<String, String>();

@Override
public void handleResult(ResultContext<?> resultContext) {
    try {
        @SuppressWarnings("unchecked")
        Map<String, Object> result = (Map<String, String>) resultContext.getResultObject();                     
        map.put(result.get("param").toString(), result.get("value").toString());
    } catch (Exception exception) {
        // exception handler
    }

}

public Map<String, String> getMap() {
    return map;
}
}

使用方法调用传递此ResultHandler。我用过Java Stack。