Подтвердить что ты не робот

Повторное использование MyBatis ResultMap в нескольких файлах mapper.xml

Я хотел бы повторно использовать конкретный из разных файлов * 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, однако теперь я хочу создать ClientWithProjectsMapper.xml, где я хочу SELECT * FROM CLIENT, PROJECT, где PROJECT.CLIENT_ID = CLIENT.ID, и вернуть объект Client со списком объекты. Другими словами, я хочу получить ClientWithProjects с одним SQL.

В моем сопоставлении я хочу повторно использовать ProjectMap (без копирования/вставки), который я определил в ProjectMapper.xml, но я не уверен, как это сделать.

Я могу выделить ProjectMap в отдельный файл, но я не нашел никаких объектов в MyBatis для # включения других файлов.

Любые идеи о том, как это можно сделать? (Я использую Maven, есть ли какие-либо плагины, которые будут фильтровать файлы, ищущие #include или такие, и включать содержимое файла прямо в обрабатываемый файл?).

Спасибо.

-AP_

4b9b3361

Ответ 1

После того как вы импортируете все файлы xperm mapper в файл mybatis-config.xml, вы можете ссылаться на ResultMaps, настроенные в любом из xmls mapper, используя идентификатор resultMap вместе с пространством имен.

для Ex: 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>

Здесь вы можете ссылаться на resultMap в других файлах Mapper xml с использованием полного имени как "com.mybatisapp.mappers.ProjectMapper.ProjectMap"