Skip to content

Commit 96d82a5

Browse files
committed
Update documentation for gh-1466
1 parent fcf3f2c commit 96d82a5

File tree

5 files changed

+167
-20
lines changed

5 files changed

+167
-20
lines changed

src/site/es/xdoc/java-api.xml

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -415,7 +415,19 @@ void rollback(boolean force)</source>
415415
<td><code>@Options</code></td>
416416
<td><code>Method</code></td>
417417
<td>Attributes of mapped statements.</td>
418-
<td>Esta anotación proporciona acceso a un gran conjunto de opciones de configuración que normalmente aparecen como atributos en los mapped statements. En lugar de complicar cada anotación existente la anotación Options proporciona una forma sencilla y concisa de acceder a estas opciones. Atributos: useCache=true, flushCache=FlushCachePolicy.DEFAULT, resultSetType=DEFAULT, statementType=PREPARED, fetchSize=-1, timeout=-1, useGeneratedKeys=false, keyProperty=“”, keyColumn=“”, resultSets=“”. Es importante comprender que las anotaciones en Java no permiten indicar un valor nulo. Por lo tanto, cuando usas la anotación Options el statement usará todos los valores por defecto. Presta atención a estos valores pro defecto para evitar comportamientos inesperados. La keyColumn solo se requiere para algunas bases de datos (como PostgreSQL) cuando la columna no es la primera columna de la tabla.</td>
418+
<td>
419+
Esta anotación proporciona acceso a un gran conjunto de opciones de configuración que normalmente aparecen como atributos en los mapped statements.
420+
En lugar de complicar cada anotación existente la anotación Options proporciona una forma sencilla y concisa de acceder a estas opciones.
421+
Atributos: useCache=true, flushCache=FlushCachePolicy.DEFAULT, resultSetType=DEFAULT, statementType=PREPARED, fetchSize=-1, timeout=-1, useGeneratedKeys=false, keyProperty=“”, keyColumn=“”, resultSets=“”, databaseId="".
422+
Es importante comprender que las anotaciones en Java no permiten indicar un valor nulo.
423+
Por lo tanto, cuando usas la anotación Options el statement usará todos los valores por defecto.
424+
Presta atención a estos valores pro defecto para evitar comportamientos inesperados.
425+
The <code>databaseId</code>(Available since 3.5.5), in case there is a configured <code>DatabaseIdProvider</code>,
426+
the MyBatis use the <code>Options</code> with no <code>databaseId</code> attribute or with a <code>databaseId</code>
427+
that matches the current one. If found with and without the <code>databaseId</code> the latter will be discarded.<br/><br/>
428+
429+
La keyColumn solo se requiere para algunas bases de datos (como PostgreSQL) cuando la columna no es la primera columna de la tabla.
430+
</td>
419431
</tr>
420432
<tr>
421433
<td>
@@ -435,7 +447,15 @@ void rollback(boolean force)</source>
435447
<li><code>&lt;select&gt;</code></li>
436448
</ul>
437449
</td>
438-
<td>Cada una de estas anotaciones representa el SQL que debe ejecutarse. Cada una de ellas recibe un array de strings (o un solo string). Si se pasa un array de strings, todos ellos se concatenarán introduciendo un espacio en blanco entre ellos. Esto ayuda a evitar el problema “falta un espacio en blanco” al construir SQL en código Java. Sin embargo, también puedes concatenarlos en un solo string si lo prefieres. Atributos: value, que es el array de String para formar una única sentencia SQL.</td>
450+
<td>
451+
Cada una de estas anotaciones representa el SQL que debe ejecutarse. Cada una de ellas recibe un array de strings (o un solo string).
452+
Si se pasa un array de strings, todos ellos se concatenarán introduciendo un espacio en blanco entre ellos.
453+
Esto ayuda a evitar el problema “falta un espacio en blanco” al construir SQL en código Java. Sin embargo, también puedes concatenarlos en un solo string si lo prefieres.
454+
Atributos: value, que es el array de String para formar una única sentencia SQL.
455+
The <code>databaseId</code>(Available since 3.5.5), in case there is a configured <code>DatabaseIdProvider</code>,
456+
the MyBatis use a statement with no <code>databaseId</code> attribute or with a <code>databaseId</code>
457+
that matches the current one. If found with and without the <code>databaseId</code> the latter will be discarded.
458+
</td>
439459
</tr>
440460
<tr>
441461
<td>
@@ -465,6 +485,10 @@ void rollback(boolean force)</source>
465485
(Since 3.5.1, you can omit <code>method</code> attribute, the MyBatis will resolve a target method via the
466486
<code>ProviderMethodResolver</code> interface.
467487
If not resolve by it, the MyBatis use the reserved fallback method that named <code>provideSql</code>).
488+
The <code>databaseId</code>(Available since 3.5.5), in case there is a configured <code>DatabaseIdProvider</code>,
489+
the MyBatis will use a provider method with no <code>databaseId</code> attribute or with a <code>databaseId</code>
490+
that matches the current one. If found with and without the <code>databaseId</code> the latter will be discarded.
491+
468492
Nota: A continuación hay una sección sobre la clase, que puede ayudar a construir SQL dinámico de una forma más clara y sencilla de leer.</td>
469493
</tr>
470494
<tr>
@@ -477,7 +501,15 @@ void rollback(boolean force)</source>
477501
<td><code>@SelectKey</code></td>
478502
<td><code>Method</code></td>
479503
<td><code>&lt;selectKey&gt;</code></td>
480-
<td>Esta anotación es igual que la &lt;selectKey&gt; para métodos anotados con @Insert, @InsertProvider, @Update o @UpdateProvider. Se ignora en otros métodos. Si especificas la anotación @SelectKey, entonces MyBatis ignorará todas las propiedades de generación de claves proporcionadas por la anotación @Options, o mediante propiedades de configuración. Atributos: statement un array de strings que contienen la SQL a ejecutar, keyProperty que es la propiedad del objeto parámetro que se actualizará con el Nuevo valor, before que debe valer true o false para indicar si la sentencia SQL debe ejecutarse antes o después de la insert, resultType que es el tipo de la propiedad keyProperty, y statementType=PREPARED.</td>
504+
<td>
505+
Esta anotación es igual que la &lt;selectKey&gt; para métodos anotados con @Insert, @InsertProvider, @Update o @UpdateProvider.
506+
Se ignora en otros métodos. Si especificas la anotación @SelectKey, entonces MyBatis ignorará todas las propiedades de generación de claves proporcionadas por la anotación @Options, o mediante propiedades de configuración.
507+
Atributos: statement un array de strings que contienen la SQL a ejecutar, keyProperty que es la propiedad del objeto parámetro que se actualizará con el Nuevo valor,
508+
before que debe valer true o false para indicar si la sentencia SQL debe ejecutarse antes o después de la insert, resultType que es el tipo de la propiedad keyProperty, y statementType=PREPARED.
509+
The <code>databaseId</code>(Available since 3.5.5), in case there is a configured <code>DatabaseIdProvider</code>,
510+
the MyBatis will use a statement with no <code>databaseId</code> attribute or with a <code>databaseId</code>
511+
that matches the current one. If found with and without the <code>databaseId</code> the latter will be discarded.
512+
</td>
481513
</tr>
482514
<tr>
483515
<td><code>@ResultMap</code></td>
@@ -622,6 +654,14 @@ class UserSqlProvider implements ProviderMethodResolver {
622654
}
623655
}]]></source>
624656

657+
<p>This example shows usage the <code>databaseId</code> attribute on the statement annotation(Available since 3.5.5):</p>
658+
<source><![CDATA[
659+
@Select(value = "SELECT SYS_GUID() FROM dual", databaseId = "oracle") // Use this statement if DatabaseIdProvider provide "oracle"
660+
@Select(value = "SELECT uuid_generate_v4()", databaseId = "postgres") // Use this statement if DatabaseIdProvider provide "postgres"
661+
@Select("SELECT RANDOM_UUID()") // Use this statement if the DatabaseIdProvider not configured or not matches databaseId
662+
String generateId();
663+
]]></source>
664+
625665
</subsection>
626666

627667
</section>

src/site/ja/xdoc/java-api.xml

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
<author email="[email protected]">Clinton Begin</author>
2525
<author email="[email protected]">Iwao AVE!</author>
2626
</properties>
27+
The <code>databaseId</code>(Available since 3.5.5), in case there is a configured <code>DatabaseIdProvider</code>,
28+
the MyBatis use the <code>Options</code> with no <code>databaseId</code> attribute or with a <code>databaseId</code>
29+
that matches the current one. If found with and without the <code>databaseId</code> the latter will be discarded.<br/><br/>
2730

2831
<body>
2932
<section name="Java API" id="javaApi">
@@ -428,8 +431,13 @@ void rollback(boolean force)</source>
428431
<td>このアノテーションを使うと、通常マップドステートメントの属性として指定される多様なスイッチや設定オプションにアクセスすることができます。<code>Options</code> アノテーションによって、各ステートメントのアノテーションを複雑化することなく、一貫したクリーンな方法で設定にアクセスできるよう工夫されています。キー: Attributes:
429432
<code>useCache=true</code>, <code>flushCache=FlushCachePolicy.DEFAULT</code>, <code>resultSetType=DEFAULT</code>,
430433
<code>statementType=PREPARED</code>, <code>fetchSize=-1</code>, <code>timeout=-1</code>,
431-
<code>useGeneratedKeys=false</code>, <code>keyProperty=""</code>, <code>keyColumn=""</code>, <code>resultSets=""</code>.
432-
Java アノテーションを使う場合、値として <code>null</code> を指定することはできないという制限があります。これはどういうことかというと、<code>Options</code> アノテーションを付加したステートメントにはデフォルトのオプションが適用されるということです。予期しない動作を防ぐため、各オプションのデフォルト値を把握しておくようにしてください。<br/><br/>
434+
<code>useGeneratedKeys=false</code>, <code>keyProperty=""</code>, <code>keyColumn=""</code>, <code>resultSets=""</code>,
435+
<code>databaseId=""</code>.
436+
Java アノテーションを使う場合、値として <code>null</code> を指定することはできないという制限があります。これはどういうことかというと、<code>Options</code> アノテーションを付加したステートメントにはデフォルトのオプションが適用されるということです。予期しない動作を防ぐため、各オプションのデフォルト値を把握しておくようにしてください。
437+
<code>databaseId</code>(3.5.5以降で利用可能):<code>DatabaseIdProvider</code>の設定がある場合は、
438+
MyBatisは<code>databaseId</code>の指定がないものまたは<code>DatabaseIdProvider</code>が提供する値と一致するものを利用します。
439+
もし<code>databaseId</code>の指定があるものとないものを両方見つけた場合は、後者は破棄されます。<br/><br/>
440+
433441
<code>keyColumn</code> は特定のデータベース(Oracle や PostgreSQL など)でのみ必須となります。
434442
<code>keyColumn</code> と <code>keyProperty</code> に対して指定可能な値については、上で出てきた insert ステートメントについての説明を参照してください。</td>
435443
</tr>
@@ -451,7 +459,14 @@ void rollback(boolean force)</source>
451459
<li><code>&lt;select&gt;</code></li>
452460
</ul>
453461
</td>
454-
<td>これらのアノテーションは、それぞれ実行対象の SQL に対応しています。各アノテーションは String の配列(単一の String でも OK)を引数に取ります。渡された String の配列は、スペース区切りで連結されます。これによって、Java のコード内で SQL を構築するときに良くある 'スペースの付け忘れ' によるバグを防ぐことができます。一応、'+' 記号で連結した文字列を引数とすることも可能です。単一値 <code>value</code> は SQL ステートメントを構成する String の配列です。</td>
462+
<td>
463+
これらのアノテーションは、それぞれ実行対象の SQL に対応しています。各アノテーションは String の配列(単一の String でも OK)を引数に取ります。
464+
渡された String の配列は、スペース区切りで連結されます。これによって、Java のコード内で SQL を構築するときに良くある 'スペースの付け忘れ' によるバグを防ぐことができます。一応、'+' 記号で連結した文字列を引数とすることも可能です。
465+
<code>value</code>:SQL ステートメントを構成する String の配列です。
466+
<code>databaseId</code>(3.5.5以降で利用可能):<code>DatabaseIdProvider</code>の設定がある場合は、
467+
MyBatisは<code>databaseId</code>の指定がないものまたは<code>DatabaseIdProvider</code>が提供する値と一致するアノテーションに指定されているステートメントを利用します。
468+
もし<code>databaseId</code>の指定があるものとないものを両方見つけた場合は、後者は破棄されます。
469+
</td>
455470
</tr>
456471
<tr>
457472
<td>
@@ -480,6 +495,10 @@ void rollback(boolean force)</source>
480495
<code>method</code> にはメソッド名を指定します
481496
(MyBatis 3.5.1以降では、<code>method</code> 属性を省略することができます。その際MyBatisは、<code>ProviderMethodResolver</code> インタフェースを介して対象メソッドの解決を試み、
482497
対象メソッドが解決できない場合は、<code>provideSql</code>という名前のメソッドを代替メソッドとして利用します)。
498+
<code>databaseId</code>(3.5.5以降で利用可能):<code>DatabaseIdProvider</code>の設定がある場合は、
499+
MyBatisは<code>databaseId</code>の指定がないものまたは<code>DatabaseIdProvider</code>が提供する値と一致するアノテーションに指定されているメソッドを利用します。
500+
もし<code>databaseId</code>の指定があるものとないものを両方見つけた場合は、後者は破棄されます。
501+
483502
<span class="label important">NOTE</span> 次の章で、クリーンで可読性の高いコードで動的 SQL を構築するためのクラスについて説明します。
484503
</td>
485504
</tr>
@@ -495,7 +514,11 @@ void rollback(boolean force)</source>
495514
<td><code>Method</code></td>
496515
<td><code>&lt;selectKey&gt;</code></td>
497516
<td>このアノテーションを <code>@Insert</code>, <code>@InsertProvider</code>, <code>@Update</code>, <code>@UpdateProvider</code> が付加されたメソッドに追加することで、XML の <code>&lt;selectKey&gt;</code> に相当する機能を実現することができます(他のメソッドに追加しても無視されます)。<code>@SelectKey</code> アノテーションが指定されている場合、<code>@Options</code> アノテーションや設定プロパティによるキーの自動生成に関する設定は無視されます。
498-
属性: <code>statement</code> SQL ステートメントを構成する String の配列です。 <code>keyProperty</code> は自動生成されたキーの値が設定される引数オブジェクトのプロパティを指定します。<code>before</code> insert の前にステートメントを実行する場合は true、後に実行する場合は false を指定します。<code>resultType</code> は keyProperty で指定したプロパティの Java タイプです。<code>statementType</code> はステートメントの種類で STATEMENT, PREPARED, CALLABLE のいずれかを指定します(デフォルトは PREPARED)。</td>
517+
属性: <code>statement</code> SQL ステートメントを構成する String の配列です。 <code>keyProperty</code> は自動生成されたキーの値が設定される引数オブジェクトのプロパティを指定します。<code>before</code> insert の前にステートメントを実行する場合は true、後に実行する場合は false を指定します。<code>resultType</code> は keyProperty で指定したプロパティの Java タイプです。<code>statementType</code> はステートメントの種類で STATEMENT, PREPARED, CALLABLE のいずれかを指定します(デフォルトは PREPARED)。
518+
<code>databaseId</code>(3.5.5以降で利用可能):<code>DatabaseIdProvider</code>の設定がある場合は、
519+
MyBatisは<code>databaseId</code>の指定がないものまたは<code>DatabaseIdProvider</code>が提供する値と一致するアノテーションに指定されているステートメントを利用します。
520+
もし<code>databaseId</code>の指定があるものとないものを両方見つけた場合は、後者は破棄されます。
521+
</td>
499522
</tr>
500523
<tr>
501524
<td><code>@ResultMap</code></td>
@@ -617,6 +640,14 @@ class UserSqlProvider implements ProviderMethodResolver {
617640
618641
}]]></source>
619642

643+
<p>次のコードは、<code>databaseId</code>属性(3.5.5以降で利用可能)の利用例です。</p>
644+
<source><![CDATA[
645+
@Select(value = "SELECT SYS_GUID() FROM dual", databaseId = "oracle") // DatabaseIdProviderが提供する値が "oracle" の時にこのステートメントを利用する
646+
@Select(value = "SELECT uuid_generate_v4()", databaseId = "postgres") // DatabaseIdProviderが提供する値が "postgres" の時にこのステートメントを利用する
647+
@Select("SELECT RANDOM_UUID()") // DatabaseIdProviderの設定がないまたはDatabaseIdProviderが提供する値に一致しない時にこのステートメントを利用する
648+
String generateId();
649+
]]></source>
650+
620651
</subsection>
621652

622653
</section>

0 commit comments

Comments
 (0)