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.DatabaseImportCodeData使用時には、以下の設定が必要です。

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インタフェースの実装クラスを指定します。

関連プロパティ名変換処理クラス

	<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>