|
1 | | -============ |
2 | | -クエリビルダ |
3 | | -============ |
| 1 | +============== |
| 2 | +Query builders |
| 3 | +============== |
4 | 4 |
|
5 | | -.. contents:: 目次 |
| 5 | +.. contents:: |
6 | 6 | :depth: 3 |
7 | 7 |
|
8 | | -``org.seasar.doma.jdbc.builder`` パッケージでは、 |
9 | | -プログラムでSQLを組み立てるためのクエリビルダを提供しています。 |
| 8 | +The package ``org.seasar.doma.jdbc.builder`` provides SQL builders. |
10 | 9 |
|
11 | | -何らかの理由により :doc:`../query/index` の利用が難しい場合にのみ、 |
12 | | -クエリビルダを利用することを推奨します。 |
13 | | -また、クエリビルダは :ref:`dao-default-method` の中で使用することを推奨します。 |
| 10 | +When it is difficult to build a SQL statement with :doc:`../query/index`, |
| 11 | +consider to use the SQL builders in :ref:`dao-default-method`. |
14 | 12 |
|
15 | | -どのクエリビルダも、インスタンスは ``Config`` 型の引数をとる |
16 | | -``static`` な ``newInstance`` メソッドで生成できます。 |
17 | | -インスタンスには、 ``sql`` メソッドでSQL文字列の断片を、 |
18 | | -``param`` メソッドと ``literal`` メソッドでパラメータの型とパラメータを渡せます。 |
19 | | - |
20 | | -``param`` メソッドで渡されたパラメータは ``PreparedStatement`` のバインド変数として扱われます。 |
21 | | - |
22 | | -``literal`` メソッドで渡されたパラメータはSQLにリテラルとして埋め込まれます。 |
23 | | -このメソッドでパラメータが渡された場合、SQLインジェクション対策としてのエスケープ処理は実施されません。 |
24 | | -しかし、SQLインジェクションを防ぐためにパラメータの値にシングルクォテーションを含めることは禁止しています。 |
25 | | - |
26 | | -検索においてパラメータのリストを渡す場合は ``params`` メソッドと ``literals`` メソッドを利用できます。 |
27 | | -パラメータはカンマで連結されたSQLに変換されます。 |
28 | | -これらは、IN句と一緒に利用されることを想定されたメソッドです。 |
29 | | - |
30 | | -検索 |
31 | | -==== |
32 | | - |
33 | | -検索には、 ``SelectBuilder`` クラスを使用します。 |
34 | | - |
35 | | -利用例は次のとおりです。 |
| 13 | +Search |
| 14 | +====== |
36 | 15 |
|
37 | 16 | .. code-block:: java |
38 | 17 |
|
|
50 | 29 | builder.sql("age in (").params(Integer.class, Arrays.asList(20, 30, 40)).sql(")"); |
51 | 30 | List<Emp> employees = builder.getEntityResultList(Emp.class); |
52 | 31 |
|
53 | | -組み立てたSQLのいくつかの方法で取得できます。 |
| 32 | +You can get result of the SQL execution in various ways. |
54 | 33 |
|
55 | | -1件取得 |
56 | | -------- |
| 34 | +Single record search |
| 35 | +-------------------- |
57 | 36 |
|
58 | 37 | * getScalarSingleResult |
59 | 38 | * getOptionalScalarSingleResult |
|
62 | 41 | * getMapSingleResult |
63 | 42 | * getOptionalMapSingleResult |
64 | 43 |
|
65 | | -複数件取得 |
66 | | ----------- |
| 44 | +Multiple records search |
| 45 | +----------------------- |
67 | 46 |
|
68 | 47 | * getScalarResultList |
69 | 48 | * getOptionalScalarResultList |
70 | 49 | * getEntityResultList |
71 | 50 | * getMapResultList |
72 | 51 |
|
73 | | -イテレート検索 |
74 | | --------------- |
75 | | - |
76 | | -* iterateAsScalar |
77 | | -* iterateAsOptionalScalar |
78 | | -* iterateAsEntity |
79 | | -* iterateAsMap |
80 | | - |
81 | | -ストリーム検索 |
82 | | --------------- |
| 52 | +Stream search |
| 53 | +------------- |
83 | 54 |
|
84 | 55 | * streamAsScalar |
85 | 56 | * streamAsOptionalScalar |
86 | 57 | * streamAsEntity |
87 | 58 | * streamAsMap |
88 | 59 |
|
89 | | -挿入 |
90 | | -==== |
91 | | - |
92 | | -挿入には、 ``InsertBuilder`` クラスを使用します。 |
93 | | - |
94 | | -利用例は次のとおりです。 |
| 60 | +Insert |
| 61 | +====== |
95 | 62 |
|
96 | 63 | .. code-block:: java |
97 | 64 |
|
|
103 | 70 | builder.param(BigDecimal.class, new BigDecimal(1000)).sql(")"); |
104 | 71 | builder.execute(); |
105 | 72 |
|
106 | | -組み立てたSQLは ``execute`` メソッドで実行できます。 |
107 | | - |
108 | | -更新 |
109 | | -==== |
110 | | - |
111 | | -更新には、 ``UpdateBuilder`` クラスを使用します。 |
112 | | - |
113 | | -利用例は次のとおりです。 |
| 73 | +Update |
| 74 | +====== |
114 | 75 |
|
115 | 76 | .. code-block:: java |
116 | 77 |
|
|
123 | 84 | builder.sql("id = ").param(int.class, 10); |
124 | 85 | builder.execute(); |
125 | 86 |
|
126 | | -組み立てたSQLは ``execute`` メソッドで実行できます。 |
127 | | - |
128 | | -削除 |
129 | | -==== |
130 | | - |
131 | | -削除には、 ``DeleteBuilder`` クラスを使用します。 |
132 | | - |
133 | | -利用例は次のとおりです。 |
| 87 | +Delete |
| 88 | +====== |
134 | 89 |
|
135 | 90 | .. code-block:: java |
136 | 91 |
|
|
142 | 97 | builder.sql("salary = ").param(BigDecimal.class, new BigDecimal(1000)); |
143 | 98 | builder.execute(); |
144 | 99 |
|
145 | | -組み立てたSQLは ``execute`` メソッドで実行できます。 |
146 | | - |
0 commit comments