名單上有在Java中此存儲過程調用:結果集的存儲過程包含LinkedCaseInsensitiveMap <V>
@Autowired
public ScoreDao(DataSource dataSource) {
setDataSource(dataSource);
mScoreStoredProcedure = new ScoreStoredProcedure(dataSource);
}
public List<Score> loadAllScore(String pUsername, String pUUID, int pLimit) {
return mScoreStoredProcedure.execute(pUsername, pUUID, pLimit);
}
private class ScoreStoredProcedure extends StoredProcedure {
private static final String SPROC_NAME = "loadUserScore";
public ScoreStoredProcedure(DataSource datasource) {
super(datasource, SPROC_NAME);
declareParameter(new SqlReturnResultSet("#result-set-2", mScoreMapper));
declareParameter(new SqlParameter("vusername", Types.VARCHAR));
declareParameter(new SqlParameter("vuuid", Types.VARCHAR));
declareParameter(new SqlParameter("vlimit", Types.INTEGER));
compile();
}
@SuppressWarnings("unchecked")
public List<Score> execute(String pUsername, String pUUID, int pLimit){
Map<String,Object> lAllScoreResult = super.execute(pUsername, pUUID, pLimit);
List<Score> lAllScore = ((List<Score>)lAllScoreResult.get("#result-set-2"));
return lAllScore;
}
}
,這映射類:
public class ScoreMapper implements RowMapper<Score> {
private String suffix = "";
@Autowired
private ScoreCreator scoreCreator;
@Autowired
private QuestionMapper questionMapper;
public ScoreMapper(String pSuffix) {
suffix = pSuffix;
}
public Score mapRow(ResultSet rs, int rowNum) throws SQLException {
Score lScore = scoreCreator.createScore(rs.getLong(suffix+"id"),
rs.getTimestamp(suffix+"stempel"), rs.getString(suffix+"username"),
rs.getInt(suffix+"points"), rs.getInt(suffix+"level"),
rs.getString(suffix+"comment"),
questionMapper.mapRow(rs, rowNum), rs.getString(suffix+"uuid"));
return lScore;
}
}
我的問題是,結果我StoredProcedure
永遠不會投射到List<Score>
。
相反,它包含一個列表LinkedCaseInsensitiveMap<V>
。每個條目都包含來自數據庫的值。
映射器通過Spring正確連線。
簡而言之:我期待結果爲List<Score>
。我以爲我用代碼中顯示的方法來處理這個問題。我如何將結果直接投射到我的List<Score>
?
我跟着這個教程http://www.jtmelton.com/2007/10/30/using-springs-storedprocedure-and-rowmapper-mechanisms/
你能不能幫我看看這個問題?
它看起來像你從來沒有調用過mapRow,你只是將地圖轉換爲列表。 – aglassman
是的Iam也很想知道,但是我按照這個教程http://www.jtmelton.com/2007/10/30/using-springs-storedprocedure-and-rowmapper-mechanisms/ –
好的。好好打擾一下我說的關於調用mapRow的內容,這應該只能在spring api中使用。 – aglassman