我正在学习如何在 Spring 应用程序中使用 JDBC,但我对此有些怀疑。
所以,让我解释一下我对一个实际例子的怀疑:
如果我有一个实现我的 DAO 接口的类,并且该类包含以下在我的数据库的 Student 表中插入新行的方法:
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)相关的名称和年龄
好的...我认为 SQL 字符串 rappresent 我的 SQL 查询必须执行才能在我的表中插入新行
我有一些问题要理解这段代码的确切含义:值(?,?)
我认为,当我在 JdbcTemplate 对象上调用 update() 方法时,会向它传递 SQL 查询以及名称和 *年龄值这些?占位符替换为这些值。
这样查询就可以执行了。
这样对吗?
是替换这些占位符的 update() 方法吗?
我还读到使用了这些占位符,所以我不必担心转义我的值......究竟是什么意思转义一个值?
最后一个问题是关于PreparedStatment的使用……阅读我读过的 Spring 文档,我还可以将 PreparedStatment 传递给 update() 方法……有什么区别?在这种情况下是 Spring 使用 SQL 字符串和 2 输入参数创建一个新的 PreparedStatment 还是我使用了不同的东西?