18

何らかの方法で同じオブジェクトを読み取るさまざまな *Mapper.xml ファイルから特定のものを再利用したいと思います。

Project という名前のデータベース テーブルがあり、これに対して次の resultMap を作成しました。

<resultMap id="ProjectMap" type="com.model.Project">
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="name" jdbcType="VARCHAR" property="name" />
    <result column="client_prj_no" jdbcType="VARCHAR" property="clientPrjNo" />
    <result column="notes" jdbcType="VARCHAR" property="notes" />
    <result column="start_date" jdbcType="TIMESTAMP" property="startDate" />
    ...
<resultMap>

これは ProjectMapper.xml でうまく機能しますが、今は SELECT * FROM CLIENT、PROJECT where PROJECT.CLIENT_ID = CLIENT.ID を実行し、List オブジェクトで Client オブジェクトを返したい ClientWithProjectsMapper.xml を作成したいと考えています。つまり、単一の SQL で ClientWithProjects を取得したいのです。

私のマッピングでは、ProjectMapper.xml で定義した ProjectMap (コピー/貼り付けなし) を再利用したいのですが、これを実現する方法がわかりません。

ProjectMap を別のファイルに分割することはできますが、MyBatis には他のファイルを #include する機能が見つかりませんでした。

これを行う方法についてのアイデアはありますか?(私はMavenを使用しています.#includeなどを探してファイルをフィルタリングし、ファイルの内容を処理中のファイルに直接含めるプラグインはありますか?).

ありがとう。

-AP_

4

1 に答える 1

29

すべてのマッパー xml を mybatis-config.xml ファイルにインポートすると、resultMap id と名前空間を使用して、任意のマッパー xml で構成された ResultMap を参照できます。

例: ProjectMapper.xml

<mapper namespace="com.mybatisapp.mappers.ProjectMapper">
    <resultMap id="ProjectMap" type="com.model.Project">
        <id column="id" jdbcType="BIGINT" property="id" />
        <result column="name" jdbcType="VARCHAR" property="name" />     
    <resultMap>
</mapper>

ClientWithProjectsMapper.xml 内

    <select id="selectProjectsByClient" parameterType="int" 
resultMap="com.mybatisapp.mappers.ProjectMapper.ProjectMap">
    select * from blahblah
    </select>

ここでは、 「com.mybatisapp.mappers.ProjectMapper.ProjectMap」のような完全修飾名を使用して、別の Mapper xml ファイルで resultMap を参照できます。

于 2013-01-28T05:04:31.317 に答える