2017-08-20 9 views
0

を返すために、どのように私のテーブルです: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を取得したい

が、簡単な方法を得ることについて少し混乱。

マイコード:

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

答えて

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を使用しました。

関連する問題