maven – 在多个mapper.xml中重用MyBatis ResultMap

我想重新使用不同的* Mapper.xml文件中的特定文件,这些文件以某种方式读取相同的对象.

我有一个名为Project的数据库表,我创建了以下resultMap for:

<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中工作得很好,但是现在我要创建一个ClientWithProjectsMapper.xml,其中我要SELECT * FROM CLIENT,PROJECT其中PROJECT.CLIENT_ID = CLIENT.ID,并且一个Client对象返回一个List对象.换句话说,我想用一个SQL获得一个ClientWithProjects.

在我的映射中,我想重用ProjectMapper.xml中定义的ProjectMap(没有复制/粘贴),但我不知道如何完成这个.

我可以将ProjectMap导出为一个单独的文件,但是我没有在MyBatis中找到任何可以#include其他文件的设备.

关于如何做到这一点的任何想法? (我正在使用Maven,有没有任何插件可以过滤找到#include等的文件,并将文件的内容直接包含在正在处理的文件中?).

谢谢.

-AP_

最佳答案
一旦导入mybatis-config.xml文件中的所有mapper xmls,您可以使用resultMap id和命名空间来引用在任何mapper xmls中配置的ResultMaps.

例如:
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>

在这里,您可以在另一个Mapper xml文件中引用resultMap,使用完全限定名称作为“com.mybatisapp.mappers.ProjectMapper.ProjectMap”

转载注明原文:maven – 在多个mapper.xml中重用MyBatis ResultMap - 代码日志