pureQuery ジェネレーターは、インターフェースでアノテーション付きメソッドのインプリメンテーションを作成するときに、XML 構成ファイルを検査して、使用する SQL ステートメント (メソッドが空のアノテーションで定義されている場合)、またはメソッドのアノテーションで使用される SQL ステートメントのオーバーライドを探します。 さらに pureQuery ジェネレーターは XML 構成ファイルを検査して、ファイルが参照する可能性があるすべての Bean も探します。
XML 構成ファイルを指定するには、pureQuery ジェネレーターを呼び出すときに xmlFile オプションを使用します。
以下の例は、XML 構成ファイルを使用することが必要になる状況を示しています。
例えば、インターフェース内でアノテーション付きメソッドを以下のように定義することができます。
@Select
Iterator<Customer> getCustomersInRegion(int r);
1 つのアプリケーション用の XML 構成ファイル内で、このメソッドに使用する SQL ステートメントを以下のように定義します。
<named-native-query name="myPackage.CustomerInterface#getCustomersInRegion(int)">
<query>
<![CDATA[SELECT CUSTID, NAME FROM Customer WHERE STOREREGION=?1]]>
</query>
</named-native-query>
もう一方のアプリケーションに対する XML 構成ファイル内で、同じく以下のようにします。
<named-native-query name="myPackage.CustomerInterface#getCustomersInRegion(int)">
<query>
<![CDATA[SELECT ID, NAME FROM CUST WHERE REGION=?1]]>
</query>
</named-native-query>
例えば、インターフェースには、1 番目のアプリケーションが使用するアノテーション付きメソッドの以下のような定義を含めることができます。
@Select(sql="SELECT CUSTID, NAME FROM Customer WHERE STOREREGION=?1")
Iterator<Customer> getCustomersInRegion(int r);
もう一方のアプリケーションに対する XML 構成ファイル内で、SQL を以下のようにオーバーライドできます。
<named-native-query name="myPackage.CustomerInterface#getCustomersInRegion(int)">
<query>
<![CDATA[SELECT ID, NAME FROM CUST WHERE REGION=?1]]>
</query>
</named-native-query>