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つの入力パラメーターがあります。データベーステーブルの2つの列(NAMEとAGE)に関連するnameとageです。
わかりました...SQL文字列は、テーブルに新しい行を挿入するために実行する必要があるSQLクエリを表していると思います
このコードの一部が正確に何を意味するのかを理解するのに問題があります:values(?、?)
JdbcTemplateオブジェクトでupdate()メソッドを呼び出すと、SQLクエリと名前および*年齢値がこれらに渡されると思いますか?プレースホルダーはこれらの値に置き換えられます。
したがって、クエリを実行できます。
正しいですか?
これらのプレースホルダーを置き換えるのはupdate()メソッドですか?
また、これらのプレースホルダーが使用されていることを読んだので、値をエスケープすることを心配する必要はありません...値をエスケープすることは正確にはどういう意味ですか?
そして最後の質問は、PreparedStatmentの使用についてです...私が読んだSpringのドキュメントを読んで、PreparedStatmentをupdate()メソッドに渡すこともできます...違いは何ですか?この場合、SQL文字列と2つの入力パラメーターを使用して新しいPreparedStatmentを作成するSpringですか、それとも別のものを使用していますか?