我正在按照本教程研究 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 接口的一个实现,所以在这个类中,我拥有在接口内声明的 CRUD 方法的所有实现。
好的...我对此类中的 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 = "插入学生(姓名,年龄)值(?,?)";
究竟是什么意思?这意味着我的create()的两个输入参数代替了这个String的“name”和“age”?
嗯...这对我来说听起来很奇怪,因为这看起来像一个字符串(实际上是“”)
第二个疑问与以下行有关:
jdbcTemplateObject.update(SQL, name, age);
如果我在 SQL 字符串中有 SQL 查询,为什么还要传递变量名和年龄?
你能帮助我理解 JDBC 是如何工作的吗?
肿瘤坏死因子
安德烈亚