このチュートリアルに従って、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 | |
+-------+-------------+------+-----+---------+----------------+
チュートリアルのリンクでわかるように、私の DAO オブジェクトのこの Student テーブルに対する CRUD 操作を記述するStudentDAOという名前のインターフェイスがあります。
さて、 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;
}
わかりました...このメソッドは、Student テーブルに新しいレコードを作成すると思います。
SQL 変数には、クエリを表す文字列が含まれており、ここで最初の疑問があります
私が持っているとき:
String SQL = "生徒 (名前、年齢) の値 (?, ?) に挿入";
正確にはどういう意味ですか?これは、私の create() の 2 つの入力パラメーターが、この文字列の「名前」と「年齢」の代わりになることを意味しますか?
うーん...これは文字列のように見えるので、私には奇妙に聞こえます(実際には ""の中にあります)
2 番目の疑いは、次の行に関連しています。
jdbcTemplateObject.update(SQL, name, age);
SQL 文字列内に SQL クエリがある場合、変数名と年齢も渡す必要があるのはなぜですか?
JDBC がどのように機能するかをよく理解するのを手伝ってくれませんか?
TNX
アンドレア