2011-08-31 67 views

回答

23

它当然是。这个例子是直接从春季3.0文档(但在2 *同):

String lastName = this.jdbcTemplate.queryForObject( 
     "select last_name from t_actor where id = ?", 
     String.class, 1212L); 

正如你所看到的,它强烈青睐预处理语句(必须使用在幕后为你哪):用占位符(?)指定参数并提供一组对象以填充参数。 (最后一个参数是预期结果的类型,但是这不是对这个问题很重要。)

你也可以使用一个NamedParameterJdbcTemplate并在Map,这也许是效率较低,但肯定更记忆提供的参数。

+1

酷 - 最主要的是,在Spring的API中使用参数化方法必须映射到底层Java PreparedStatements中的参数化方法,以保护保护。 – Brabster

+0

他们应该做的; Spring的所有关于以更方便的方式实现最佳实践,并且已经建议使用PreparedStatement ...我记得尽管相当挑剔,我仍然在第一版Java 1.1中遇到的JDBC中建议使用它。 (我不知道所有的JDBC驱动程序是否都能正确使用它,但如果不这样做,我会认为这是一个不使用它的理由。) –