読者です 読者をやめる 読者になる 読者になる

かまたま日記3

プログラミングメイン、たまに日常

resultMapをファイル間で共有する。

MyBatis

MapperXMLファイルを複数に分けている場合、他のファイルのresultMapを使いたい場合は
「<ネームスペース>.」で取得できる。以下のような感じ。
たぶん一つのファイルの別のnamespaceのMapperタグ内のresultMapを使うときもこんな感じに書くのだと思われる。

BookMapper.xml

<mapper namespace="kamatama41.sample.mybatis.mapper.BookMapper">
    <select id="selectByTitle" parameterType="String" resultMap="bookMap">
        SELECT book.isbn, book.title
              ,author.id, author.name, author.birthday
        FROM book
        INNER JOIN author ON book.author_id = author.id
        WHERE book.title = #{title}
    </select>

    <resultMap id="bookMap" type="Book">
        <id property="isbn" column="isbn"/>
        <result property="title" column="title"/>
        <association property="author" resultMap="kamatama41.sample.mybatis.mapper.AuthorMapper.authorResult"/>
    </resultMap>

</mapper>

AuthorMapper.xml

<mapper namespace="kamatama41.sample.mybatis.mapper.AuthorMapper">
    <select id="selectByName" parameterType="String" resultMap="authorMap">
        ・・・
    </select>

    <resultMap id="authorMap" type="Author">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="birthday" column="age"/>
    </resultMap>

</mapper>