回答編集履歴
5
修正
test
CHANGED
@@ -16,4 +16,4 @@
|
|
16
16
|
|
17
17
|
でもこれは、SQLインジェクションを引き起こすおそれのある典型的なダメコードです。
|
18
18
|
|
19
|
-
このようなことをさせないために、queryForMap(String sql, @Nullable Object... args)メソッドは、バインド変数を使えるようにしてるんです。
|
19
|
+
このようなことをさせないために、queryForMap(String sql, @Nullable Object... args)メソッドは、バインド変数を使えるようにしてるんです。(参考:[データベースのバインド変数のメリットを語る(②メリット:SQLインジェクションの防止)](https://qiita.com/zd6ir7/items/14cad311e017ade98f6c))
|
4
修正
test
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
> 検索したいレコードのidさえわかればデータベースから検索できるのになぜqueryという引数が必要なのでしょうか?
|
2
2
|
あらゆるデータベースに「id」という名前で主キーが存在するわけではないからです。
|
3
3
|
そのコードサンプルの前提としているサンプルデータベースの抽出条件とするカラムがたまたま「id」という名前だから「id」という名前でコード上、アクセスしているだけで、データベースによっては別名の場合もあるでしょう。
|
4
|
+
また抽出したいレコードについて、すべてのカラムではなく必要なカラムだけ限定して抽出したい場合もあるでしょう。
|
4
5
|
|
5
|
-
だからこそ、query と言う引数で、
|
6
|
+
だからこそ、query と言う引数で、対象となるデータベース及び目的とするデータに応じた SQL 文を指定できるようにしているわけです。
|
6
7
|
|
7
8
|
> queryが分かればidの引数など不要に思います。
|
8
9
|
これについて「id引数は不要だ。id を変数化して使用したいなら query として直接組み立てる下記のようなコードでいいじゃないか?」と考えていらっしゃるのかもしれません。
|
3
修正
test
CHANGED
@@ -15,4 +15,4 @@
|
|
15
15
|
|
16
16
|
でもこれは、SQLインジェクションを引き起こすおそれのある典型的なダメコードです。
|
17
17
|
|
18
|
-
このようなことをさせないために、queryForMap(String
|
18
|
+
このようなことをさせないために、queryForMap(String sql, @Nullable Object... args)メソッドは、バインド変数を使えるようにしてるんです。
|
2
修正
test
CHANGED
@@ -5,8 +5,7 @@
|
|
5
5
|
だからこそ、query と言う引数で、そのデータベースに応じた SQL 文を指定できるようにしているわけです。
|
6
6
|
|
7
7
|
> queryが分かればidの引数など不要に思います。
|
8
|
-
queryを 固定してしまうと id を変えられません。
|
9
|
-
「id引数は不要だ。id を変数化して使用したいなら query として直接組み立てる下記のようなコードでいいじゃないか?」と考えていらっしゃるかもしれません。
|
8
|
+
これについて「id引数は不要だ。id を変数化して使用したいなら query として直接組み立てる下記のようなコードでいいじゃないか?」と考えていらっしゃるのかもしれません。
|
10
9
|
```
|
11
10
|
String query="select"
|
12
11
|
+"from employee"
|
1
修正
test
CHANGED
@@ -10,8 +10,7 @@
|
|
10
10
|
```
|
11
11
|
String query="select"
|
12
12
|
+"from employee"
|
13
|
-
+"where id="
|
13
|
+
+"where id=" +id;
|
14
|
-
+id;
|
15
14
|
Map<String, Object> employee=jdcbTemplate.queryForMap(query);
|
16
15
|
```
|
17
16
|
|