@@ -191,31 +191,35 @@ AND title like ‘someTitle’]]></source>
191
191
</subsection >
192
192
<subsection name =" ダイナミック SQL 記述言語" >
193
193
<p >バージョン 3.2 以降、ダイナミック SQL の記述言語が Pluggable になりました。言語ドライバーを記述することで、任意の言語でダイナミック SQL を記述することができます。</p >
194
- <p >標準では次の2つの言語が用意されています。</p >
195
- <ul >
196
- <li >xml</li >
197
- <li >raw</li >
198
- </ul >
199
- <p ><code >xml</code > はデフォルトの SQL 記述言語で、これまでのセクションで説明した全ての機能を利用することができます。</p >
200
- <p ><code >raw</code > というのは、実際には言語を使用しない場合に指定します。この場合、MyBatis がステートメントをデータベースドライバーに渡す前に行うのは引数の置換処理のみです。当然、 <code >xml</code > よりも <code >raw</code > を指定した場合の方が処理は高速です。
201
- </p >
202
- <p >言語の指定は、ステートメント要素に <code >lang</code > 属性を追加することで行います。
203
- </p >
204
- <source ><![CDATA[ <select id="selectBlog" lang="raw">
194
+ <p >カスタムの言語ドライバーを使用する場合、まずは LanguageDriver インターフェイスを実装したクラスを作成します。</p >
195
+ <source ><![CDATA[ public interface LanguageDriver {
196
+ ParameterHandler createParameterHandler(MappedStatement mappedStatement, Object parameterObject, BoundSql boundSql);
197
+ SqlSource createSqlSource(Configuration configuration, XNode script, Class<?> parameterType);
198
+ SqlSource createSqlSource(Configuration configuration, String script, Class<?> parameterType);
199
+ }]]> </source >
200
+ <p >作成した言語ドライバーをデフォルトとして使用する場合は、mybatis-config.xml に次のような設定を追加します(typeAlias の使用は必須ではありません)。</p >
201
+ <source ><![CDATA[ <typeAliases>
202
+ <typeAlias type="org.sample.MyLanguageDriver" alias="myLanguage"/>
203
+ </typeAliases>
204
+ <settings>
205
+ <setting name="defaultScriptingLanguage" value="myLanguage"/>
206
+ </settings>
207
+ ]]> </source >
208
+ <p ><code >lang</code > 属性を指定することで、特定のステートメントの言語ドライバーのみを変更することもできます。</p >
209
+ <source ><![CDATA[ <select id="selectBlog" lang="myLanguage">
205
210
SELECT * FROM BLOG
206
211
</select>]]> </source >
207
212
<p >Mapper インターフェイスを使っている場合は <code >@Lang</code > アノテーションを使います。</p >
208
- <source ><![CDATA[ public interface Mapper {
209
- @Lang(RawLanguageDriver .class)
213
+ <source ><![CDATA[ public interface Mapper {
214
+ @Lang(MyLanguageDriver .class)
210
215
@Select("SELECT * FROM BLOG")
211
216
List<Blog> selectBlog();
212
217
}]]> </source >
213
- <p >LanguageDriver インターフェイスを実装することで、カスタムの言語ドライバーを作成することもできます。</p >
214
- <source ><![CDATA[ public interface LanguageDriver {
215
- ParameterHandler createParameterHandler(MappedStatement mappedStatement, Object parameterObject, BoundSql boundSql);
216
- SqlSource createSqlSource(Configuration configuration, XNode script, Class<?> parameterType);
217
- SqlSource createSqlSource(Configuration configuration, String script, Class<?> parameterType);
218
- }]]> </source >
218
+
219
+ <p ><span class =" label important" >NOTE</span > Apache Velocity を使ってダイナミック SQL を記述することができます。MyBatis-Velocity プロジェクトを参照してください。</p >
220
+
221
+ <p >これまでのセクションで出てきた XML タグは、全てデフォルトの言語ドライバー <code >org.apache.ibatis.scripting.xmltags.XmlLanguageDriver</code > (エイリアスは <code >xml</code > )によって提供されているものです。</p >
222
+
219
223
</subsection >
220
224
</section >
221
225
</body >
0 commit comments