CodeGen.dicon設定リファレンス
antでコードを生成する際の、dicon/CodeGen.diconの設定方法について記述します。
出力先設定
<initMethod name="add"> <arg>"java"</arg> <arg>"target/gen/java"</arg> </initMethod>
<initMethod>内の第一引数(一つ目の<arg>タグ)が出力区分、第二引数(二つ目の<arg>タグ)が出力先指定になります。
第一引数 | 出力区分 |
---|---|
java | javaソースの出力先 |
resource | リソースファイルの出力先 |
createtable | DDLの出力先 |
各種設定
<component class="org.seasar.codegen.impl.CodeGenConfigImpl" > <property name="headerTemplatePath">"test/header.txt"</property> <property name="versionNoPropertyName">"versionno"</property> <property name="outputAllDaoDicon">true</property> <property name="outputDDL">true</property> <!--入力ファイル名設定 --> <property name="inputFile">"src/test/resources/codegen.jer"</property> <!--パッケージ名名設定 --> <property name="packageName">"org.seasar.codegen.sample"</property> <property name="encoding">"UTF-8"</property> <property name="sequnceMapping"> <component class="java.util.HashMap" > <initMethod name="put" > <arg>"EMP_TABLE"</arg> <arg>"empNo"</arg> </initMethod> </component> </property> </component>
org.seasar.codegen.CodeGenConfigインターフェースには、下記のプロパティがあります。
プロパティ名 | 設定項目 | デフォルト・必須 |
---|---|---|
HeaderTemplatePath | ヘッダーテンプレートのパスです。 | null |
versionNoPropertyName | バージョン番号による排他制御用のプロパティ名です。
カラム名ではありません |
null |
timestampPropertyName | タイムスタンプによる排他制御用のプロパティ名です。
カラム名ではありません |
null |
identityType | 主キーの自動生成方法です。
identity/sequence/null(自動生成しない) |
null(自動生成しない) |
outputAllDaoDicon | 全てのDaoのコンポーネント定義を記述した、alldao.diconを出力するかを指定します。Seasar2の SMART Deploy を使用しない場合に指定します。 | false |
outputDDL | DDLを出力するかを指定します。(derby/H2/PostgreSQLのみ) | false |
inputFile | スキーマ指定を記述した入力ファイルを指定します。 | 必須 |
packageName | 出力パッケージを指定します。 | 必須 |
encoding | 出力 エンコーディングを指定します。 | UTF-8 |
sequnceMapping | テーブルと主キーの自動生成に使うシーケンスのマッピングを指定します。java.util.Map形式で指定します。
JiemamyとDBスキーマからの生成時のみ有効です。 |
入力処理クラス
<!--入力ファイル設定 --> <component class="org.seasar.codegen.impl.JiemamyImportCodeData"> </component> <!-- <component class="org.seasar.codegen.impl.DatabaseImportCodeData"> <property name="schemaName">null</property> <initMethod name="addTable"> <arg>"EMP4"</arg> </initMethod> <initMethod name="addTable"> <arg>"DEPT4"</arg> </initMethod> </component> -->
org.seasar.codegen.ImportCodeDataインターフェスの実装クラスを指定します。
- org.seasar.codegen.impl.ERWinCSVImportCodeData
- org.seasar.codegen.impl.ExcelImportCodeDataMultiSheet
- org.seasar.codegen.impl.ExcelImportCodeDataSingleSheet
- org.seasar.codegen.impl.JiemamyImportCodeData
- org.seasar.codegen.impl.DatabaseImportCodeData
org.seasar.codegen.impl.DatabaseImportCodeData使用時には、以下の設定が必要です。
- JDBCドライバを、libディレクトリの下に配置する。
- dicon/jdbc.diconに、 データソースの設定を記述する。
org.seasar.codegen.impl.DatabaseImportCodeDataには、以下のプロパティと初期化メソッドが使用可能です。
指定方法 | プロパティ・メソッド名 | 説明 |
---|---|---|
property | schemeName | DBスキーマから読み込む時の対象スキーマです。 |
initMethod | addTable | DBスキーマから読み込む時の対象テーブルの配列です。 |
property | ignoreTablePattern | DBスキーマから読み込む時の対象外テーブルの正規表現です。 |
DBタイプ
<!--DBタイプ設定--> <component class="org.seasar.codegen.dbms.MySQL"> </component>
org.seasar.codegen.dbms.Dbmsインタフェースの実装クラスを指定します。
- org.seasar.codegen.dbms.DB2
- org.seasar.codegen.dbms.Derby
- org.seasar.codegen.dbms.H2
- org.seasar.codegen.dbms.HSQL
- org.seasar.codegen.dbms.MaxDB
- org.seasar.codegen.dbms.MSSQLServer
- org.seasar.codegen.dbms.MySQL
- org.seasar.codegen.dbms.Oracle
- org.seasar.codegen.dbms.PostgreSQL
関連プロパティ名変換処理クラス
<component class="org.seasar.codegen.convert.impl.FKNameChildNameConverterImpl"> </component>
org.seasar.codegen.convert.impl.FKNameChildNameConverterImplクラスを指定してください。
プロパティ・クラス名の変換処理クラス
<component class="org.seasar.codegen.convert.impl.CamelConverterImpl"> </component>
出力クラスのプロパティ・クラス名の変換処理クラス(org.seasar.codegen.convert.NameConverterインターフェースの実装クラス)を指定します。
org.seasar.codegen.convert.impl.CamelConverterImpl指定時では、アンダースコア区切りのテーブル名・カラム名をCamelCaseに変換します。(例・ EMPLOYEE_TABLE→EmployeeTableDao)
変換しない場合は、org.seasar.codegen.convert.impl.NullConverterImplクラスを指定してください。
記述例
以下に記述例を示します。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.3//EN" "http://www.seasar.org/dtd/components23.dtd"> <components> <include path="j2ee.dicon"/> <include path="internal.dicon"/> <component name="path" class="org.seasar.codegen.ant.DirectoryList" > <!-- addメソッドの第2引数は生成したソースの出力先です --> <initMethod name="add"> <arg>"java"</arg> <arg>"target/gen/java"</arg> </initMethod> <initMethod name="add" > <arg>"resource"</arg> <arg>"target/gen/resources"</arg> </initMethod> <initMethod name="add" > <arg>"createtable"</arg> <arg>"target/gen/ddl"</arg> </initMethod> </component> <component class="org.seasar.codegen.impl.CodeGenConfigImpl" > <property name="headerTemplatePath">"test/header.txt"</property> <property name="versionNoPropertyName">"versionno"</property> <property name="outputAllDaoDicon">true</property> <property name="outputDDL">true</property> <property name="encoding">"UTF-8"</property> <!--入力ファイル名設定 --> <property name="inputFile">"src/test/resources/codegen.jer"</property> <!--パッケージ名名設定 --> <property name="packageName">"org.seasar.codegen.sample"</property> </component> <!--入力ファイル設定 --> <component class="org.seasar.codegen.impl.JiemamyImportCodeData"> </component> <!-- <component class="org.seasar.codegen.impl.DatabaseImportCodeData"> <property name="schemaName">null</property> <initMethod name="addTable"> <arg>"EMP4"</arg> </initMethod> <initMethod name="addTable"> <arg>"DEPT4"</arg> </initMethod> </component> --> <!--DBタイプ設定--> <component class="org.seasar.codegen.dbms.MySQL"> </component> <component class="org.seasar.codegen.convert.impl.FKNameChildNameConverterImpl"> </component> <component class="org.seasar.codegen.convert.impl.CamelConverterImpl"> </component> </components>