Skip to content

Commit 5b984d6

Browse files
committed
リテラル変数コメントのドキュメントを追加
1 parent 44106f9 commit 5b984d6

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

docs/sources/sql.rst

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,51 @@ Dao インタフェースのメソッドと対応する SQL の例は次のと
221221
where
222222
salary = /* dto.getTaxedSalary() */1234
223223
224+
リテラル変数コメント
225+
--------------------
226+
227+
リテラル変数を示す式コメントを *リテラル変数* コメントと呼びます。
228+
リテラル変数は、 SQLのリテラルの形式に変換された後にSQLに埋め込まれます。
229+
リテラルの形式に変換とは、文字列型をシングルクォートで囲むなどを指します。
230+
この変換にはSQLインジェクション対策としてのエスケープ処理は含まれません。
231+
232+
SQL インジェクションを防ぐため、リテラル変数の値にシングルクォテーションを含めることは禁止しています。
233+
234+
リテラル変数は ``/*^~*/`` というブロックコメントで囲んで示します。
235+
リテラル変数の名前はDaoメソッドのパラメータ名に対応します。
236+
対応するパラメータの型は :doc:`basic` もしくは :doc:`domain` でなければいけません。
237+
リテラル変数コメントの直後にはテスト用データを指定する必要があります。
238+
ただし、テスト用データは実行時には使用されません。
239+
240+
Dao インタフェースのメソッドと対応する SQL の例は次のとおりです。
241+
242+
.. code-block:: java
243+
244+
Employee selectByCode(String code);
245+
246+
.. code-block:: sql
247+
248+
select * from employee where code = /*^ code */'test'
249+
250+
Dao の呼び出し例は次の通りです。
251+
252+
.. code-block:: java
253+
254+
EmployeeDao dao = new EmployeeDaoImpl();
255+
List<Employee> list = dao.selectByCode("abc");
256+
257+
発行される SQL は次のようになります。
258+
259+
.. code-block:: sql
260+
261+
select * from employee where code = 'abc'
262+
263+
記法が異なることを除けば、使い方はバインド変数コメントと同様です。
264+
265+
.. note::
266+
267+
リテラル変数コメントは、実行計画を固定するなどあえてバインド変数の使用を避けたい場合に利用できます。
268+
224269
埋め込み変数コメント
225270
--------------------
226271

0 commit comments

Comments
 (0)