2012-09-12 284 views
0

我在我的搜索過程中使用Spring NamedParameterJdbcTemplate,但是當我得到很多結果時,它的執行需要幾次,我不知道是否有方法來優化它。 這裏我的代碼:NamedParameterJdbcTemplate非常慢

NamedParameterJdbcTemplate jt = new NamedParameterJdbcTemplate(dataSource); 
StringBuilder sb = new StringBuilder(query); 
query = sb.toString(); 
return jt.query(query, map, new MyRowMapper()); 

你有什麼想法嗎?

謝謝大家!

回答

1

你可以做的事情很少
1.爲什麼每次調用方法時創建實例NamedParameterJdbcTemplate?創建一次並將以前創建的實例傳遞給該方法。

NamedParameterJdbcTemplate jt = new NamedParameterJdbcTemplate(dataSource); 

保留NamedParameterJdbcTemplate作爲類屬性並初始化一次。
2.你在這裏嘗試什麼?

StringBuilder sb = new StringBuilder(query); 
query = sb.toString(); 

query通行證直接.query()方法如果String類型。
3.在MyRowMapper的內部,請確保您只在mapRow方法中提取和分配必填字段。這可能會影響執行時間,因爲結果集中的每條記錄都會調用mapRow一次。

+0

是的,StringBuilder ...在這裏是一個額外的代碼。 – Mohamed

+0

我只能調用這個方法一次 – Mohamed

+0

@Mohamed:那麼你必須看看你的rowMapper。如果你只在'mapRow'方法中使用必需的字段,那麼我不認爲你可以用你的代碼做更多的事情。 – xyz