【发布时间】:2013-02-19 12:09:08
【问题描述】:
我正在按照本教程学习 Spring Framework 上的 JDBC 使用:http://www.tutorialspoint.com/spring/spring_jdbc_example.htm
所以我的 MySql DB 上有一个名为 Student 的下表:
mysql> describe Student;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| ID | int(11) | NO | PRI | NULL | auto_increment |
| NAME | varchar(20) | NO | | NULL | |
| AGE | int(11) | NO | | NULL | |
+-------+-------------+------+-----+---------+----------------+
正如您在教程链接中看到的,我有一个名为 StudentDAO 的接口,它描述了我的 DAO 对象的这个 Student 表上的 CRUD 操作
好的,看看 StudentJDBCTemplate 类:这是 StudentDAO 接口的一个实现,所以在这个类中,我拥有在界面。
好的...我对这个类中的 JDBC 方法的含义有些疑问。
例如当我有类似的东西时:
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;
}
好的...我认为这个方法在我的学生表中创建一个新记录。
SQL 变量包含一个表示我的 查询 的字符串,在这里我有第一个疑问
当我有:
String SQL = "insert into Student (name, age) values (?, ?)";
究竟是什么意思?意思是我create()的两个入参代替了这个String里面的“name”和“age”?
嗯...这对我来说听起来很奇怪,因为这看起来像一个字符串(实际上是“”)
第二个疑问与以下行有关:
jdbcTemplateObject.update(SQL, name, age);
如果我在 SQL 字符串中有 SQL 查询,为什么还要传递变量名和年龄?
您能帮我理解一下 JDBC 的工作原理吗?
Tnx
安德烈亚
【问题讨论】:
标签: java database spring spring-mvc jdbc