我想知道如何使用PreparedStatementCreatorFactory。至於我read它像下面的代碼,除了在罕見的例子不僅sql給工廠,但也是一個int []類型,但我不想傳遞數以百計的類型,因爲jdbc通常如果將params作爲object []傳遞,則基於java類型檢索類型。我正在使用Spring 3.1.3 RELEASE。Spring JDBC PreparedStatementCreator無效Api使用
public int addEntityAndGetId(String name, String address){
String sql = "INSERT INTO mytable (NAME,ADDRESS) VALUES (?,?)";
Object[] params = new Object[]{name,address};
PreparedStatementCreatorFactory factory = new PreparedStatementCreatorFactory(sql);
PreparedStatementCreator psc = factory.newPreparedStatementCreator(params);
KeyHolder generatedKeyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(psc, generatedKeyHolder);
return generatedKeyHolder.getKey().intValue();
}
但我得到的是一個org.springframework.dao.InvalidDataAccessApiUsageException。
我真的需要類型嗎?就像在每個jdbc更新語句中一樣,你只需傳遞一個對象[]和它的罰款。
這個問題的目的是爲了避免需要指定任何列類型,並通過讓jdbc確定哪個列類型適合哪個對象來避免PreparedStatementSetters在crud查詢上。
您是否真的閱讀過堆棧跟蹤?它是一個'ClassNotFoundException',因此你在類路徑中缺少一個jar文件。你缺少spring-tx。 – 2014-10-27 06:54:26
@ M.Deinum感謝您指出。我會解決這個問題。雖然這不能解決問題。問題是爲什麼這個聲明不起作用?我怎麼能得到它的工作,如果可能的話,沒有指定列類型? – gantners 2014-10-27 10:10:40
該語句應該包含與參數相同數量的佔位符。單一?如果您有多個參數,將不起作用。 – 2014-10-27 10:57:49