Mybatis reference sql from another mapper.xml file

Ginto Hewoo picture Ginto Hewoo · Oct 28, 2013 · Viewed 8.9k times · Source

I have written a standard select and resultMap for a table/object in one mapper.xml file and am wondering if there is a method to use this select in another mapper.xml file via the "select" parameter on Associations, Collections, etc.

Answer

Roman Konoval picture Roman Konoval · Nov 2, 2013

Elements defined in other mapper files can be used by fully qualified identifier which includes mapper namespace.

For example you have select in mapper1.xml:

<mapper namespace="com.foo.bar.mapper.Mapper1">

  <select id="getEntity1" resultType="Entity1">
    select * form entity1
  </select>
</mapper>

It can be used in mapper2.xml:

<mapper namespace="com.foo.bar.mapper.Mapper2">

  <resultMap id="entity2ResultMap" type="Entity2">
    <association property="entity1"
                 column="entity1_id" 
                 javaType="Entity1" 
                 select="com.foo.bar.mapper.Mapper1.getEntity1"/>
  </resultMap>

</mapper>