【发布时间】:2013-02-04 10:17:36
【问题描述】:
我正在学习如何在 Spring 应用程序中使用 JDBC,但我对此有些怀疑。
所以,让我解释一下我对一个实际例子的疑问:
如果我有一个实现我的 DAO 接口的类,并且该类包含以下在我的数据库的学生表中插入新行的方法:
public void create(String name, Integer age) {
String SQL = "insert into Student (name, age) values (?, ?)";
jdbcTemplateObject.update(SQL, name, age);
System.out.println("Created Record Name = " + name + " Age = " + age);
return;
}
此方法有 2 个输入参数:name 和 age,它们与我的数据库表中的两列(NAME 和 AGE)相关
好的...我认为 SQL 字符串 rappresent 我的 SQL 查询必须执行才能在我的表中插入新行
我在理解这段代码的确切含义时遇到了一些问题:values(?, ?)
我认为,当我在 JdbcTemplate 对象上调用 update() 方法时,会将 SQL 查询和 name 和 *age 值传递给它?占位符被替换为这些值。
这样查询就可以执行了。
对吗?
是 update() 方法代替了这些占位符吗?
我还读到使用了这些占位符,因此我不必担心转义我的值......究竟是什么意思 转义值?
最后一个问题是关于 PreparedStatment 的使用...阅读我读过的 Spring 文档,我还可以将 PreparedStatment 传递给 update() 方法...有什么区别?在这种情况下是 Spring 使用 SQL 字符串和 2 输入参数创建一个新的 PreparedStatment 还是我使用不同的东西?
【问题讨论】:
标签: java spring spring-mvc jdbc prepared-statement