2012-12-17 38 views
0

我已經開始與春天JdbcTemplates工作,我有一個關於SQL的問題:SQL中的JdbcTemplate

在下面的代碼: 「?ID =」

String sql = "SELECT * FROM CUSTOMER WHERE CUST_ID = ?"; 
Customer customer = (Customer)getJdbcTemplate().queryForObject(
      sql, new Object[] { custId }, new CustomerRowMapper()); 

是什麼手段? 我們在這個查詢中查找什麼? 該查詢似乎尚未完成。

感謝

回答

1

問號是可更換的SQL參數。第二個語句中的「new Object [] {custId}」參數提供參數的值。例如,如果「custId」的值是42,那麼結果SQL查詢將是「SELECT * FROM CUSTOMER WHERE CUST_ID = 42」。您應該使用參數化的SQL查詢來減少SQL注入攻擊的可能性並促進查詢計劃的緩存。如果你不熟悉,我建議你閱讀。

+0

我可以使用JdbcTemplate進行命名參數查詢嗎?非常感謝。 – user1851008

+0

是的,請查看PreparedStatementCreator和PreparedStatementSetter類。 – Dan