説明
概要
指定されたファイルに含まれる任意のSQLを実行します。
実行できるSQLファイルの形式については、SQLファイル を参照ください。
接続先のデータベースはJdbcManagerのコンポーネント名によって決まります。
パラメータ
Antタスクへのパラメータを以下に示します。
トップレベルのパラメータ
| 属性 | 説明 | デフォルト値 | 必須 |
|---|---|---|---|
| sqlFileEncoding | SQLファイルのエンコーディングです。 | "UTF-8" | NO |
| statementDelimiter | SQLステートメントの区切り文字です。 | ";" | NO |
| blockDelimiter | SQLブロックの区切り文字です。指定しない場合は、データベースのデフォルトの区切り文字が使用されます。たとえば、SQL Serverでは"go"、Oralce Databaseでは"/"、MySQLでは"/"、DB2では"@"が使用されます。 | - | NO |
| haltOnError | "true"の場合、SQLの実行が失敗すると即座にエラーを返します。 | "true" | NO |
| transactional | "true"の場合、単一のトランザクションとして実行します。 | "false" | NO |
| genDialectClassName | S2JDBC-Genのダイアレクトインタフェースの実装クラス名です。ここに指定するクラスはorg.seasar.extension.jdbc.gen.dialect.GenDialectインタフェースを実装している必要があります。指定しない場合はS2JDBCのダイアレクト に対応したデフォルトのクラスが使用されます。 | - | NO |
| configPath | JdbcManagerのコンポーネント定義を含む設定ファイルです。このタスクの実行に使用されます。 | "s2jdbc.dicon" | NO |
| env | 環境名です。 | "ut" | NO |
| jdbcManagerName | JdbcManagerのコンポーネント名です。 | "jdbcManager" | NO |
| factoryClassName | S2JDBC-Genの公開されたインタフェースの実装を作成するファクトリのクラス名です。S2JDBC-Genをカスタマイズする場合に独自のファクトリクラスを指定できます。ここに指定するクラスはorg.seasar.extension.jdbc.gen.internal.factory.Factoryインタフェースを実装している必要があります。 | "org.seasar.extension.jdbc.gen .internal.factory.FactoryImpl" |
NO |
| commandInvokerClassName | S2JDBC-Genのコマンドを呼び出すクラスの名前です。コマンドの呼び出し前後で任意の処理を実行したい場合に指定します。ここに指定するクラスはorg.seasar.extension.jdbc.gen.command.CommandInvokerインタフェースを実装している必要があります。 | "org.seasar.extension.jdbc.gen .internal.command.CommandInvokerImpl" |
NO |
| classpath | このタスクを実行する際のクラスパスです。 | - | classpathrefが指定されていない場合YES |
| classpathref | このタスクを実行する際のクラスパスの参照です。 | - | classpathが指定されていない場合YES |
ネストした要素として指定されるパラメータ
SqlFileList
SQLファイルを指定するためには、<SqlFileList>要素を使用します。 この要素はひとつ以上の指定が必須です。
<SqlFileList>はAntの<FileList>と同じデータ型です。 使用可能な属性やネストした要素についてはAntのドキュメントを参照してください。
jvmArg
このタスクの大部分の処理は別VMで行われます。VMに引数を渡す場合は<jvmarg>要素を使用します。 これはAntのJavaタスクで使用できる<jvmarg>と同じです。 使用可能な属性やネストした要素についてはAntのドキュメントを参照してください。
例
SQLファイルを実行する
SQLファイルを実行するには、実行したいSQLファイルを<SqlFileList>に指定します。 次の例では1つのSQLファイルを指定していますが、複数のSQLを指定可能です。
<exec-sql
classpathRef="classpath">
<sqlFileList dir="sql">
<file name="aaa.sql"/>
</sqlFileList>
</exec-sql>
トランザクション内で実行する
SQLファイル内のSQLをトランザクション内で実行するには、transactional属性に"true"を指定します。
<exec-sql
transactional="true"
classpathRef="classpath">
<sqlFileList dir="sql">
<file name="aaa.sql"/>
<file name="bbb.sql"/>
<file name="ccc.sql"/>
</sqlFileList>
</exec-sql>
上記の定義では、トランザクションが開始された後、aaa.sql、bbb.sql、ccc.sqlに記述されたSQLが順に実行され、エラーが発生しなければコミットされます。 エラーが発生した場合、トランザクションはロールバックされます。
