2017-04-04 123 views
1

私はSpringとMyBatisを使用しています。 Can we import XML file into another XML file?を参照して別のMyBatisファイル(自動生成されたもの)をインポートしようとしました。MyBatis XMLファイルを別のMyBatis XMLファイルにインポートできますか?

1)MyTest.xml

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE mapper 
     PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
     "http://mybatis.org/dtd/mybatis-3-mapper.dtd" [ 
     <!ENTITY BaseTest.xml SYSTEM "BaseTest.xml" > 
     ]> 
<mapper namespace="com.test.abc"> 
    &BaseTest.xml; 

    <select id="CUSTOMIZED_SELECT"> 
    ... 
    </select> 
    <insert id="CUSTOMIZED_INSERT"> 
     ... 
    </insert> 
</mapper> 

2)BaseTest.xml。実際は単なるXMLスニペットです。

<sql id="GENERAL_WHERE"> 
    ... 
</sql> 
<select id="GENERAL_SELECT"> 
    ... 
</select> 
<insert id="GENERAL_INSERT"> 
    ... 
</insert> 

これらの2つのファイルは、同じディレクトリにあります。しかし、SpringはBaseTest.xmlが見つからないと常に不満を持ちます。

調整が必要な特別なものはありますか?

ところで、BaseTest.xmlとMyTest.xmlの背後にある理由は、BaseTest.xmlが自動生成され、MyTest.xmlが手動で作成されているためです。

ありがとうございます!

答えて

1

いいえ、Mybatis XMLマッパーを別のものにインポートすることはできません。 できる場合:<mapper>namespaceの属性はどうなりますか?マッパーで定義された<resultMap>フラグメントは、別のマッパーから参照されてもよい。例えばnamespace.id

:ちょうど完全修飾名を使用してください<include refid="com.test.abc.TestMapper.sqlFragementId" />

ANSが含まフラグメントはまた、フラグメントが含まれている場合、参照が完全修飾名をも使用して、その後、ルートマッパーから作られることを忘れないでください同じマッパー内のフラグメントを参照する場合でも必要です。とにかく、単純なid参照を保持することで、オーバーライド(ある種の継承)が可能になります。しかし、これは注意して処理することです。

+0

答えをありがとう。私はこれが動作することができることを知っているが、それは私が望むものではない。本質的にMyBatisはXMLファイルなので、http://stackoverflow.com/questions/5121052/can-we-import-xml-file-into-another-xml-に従って別のXMLファイルを無修正で含めることができるはずです。ファイル。もちろん、BaseTest.xmlに要素を追加しないでください。 – user1040933

+0

私は質問を再編集して、BaseTest.xmlの例を含めて、より明確にするようにしました。 – user1040933

関連する問題