这是我的表:
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);
答案 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。