有时一个单独的数据库查询也许返回很多不同(但是希望有些关联)数据类型的结果集。鉴别器元素就是被设计来处理这个情况的,还有包括类的继承层次结构
<select id="findAll" resultMap="vehicleMap">
<id property="id" column="ID"/>
<result property="color" column="TYPE"/>
<discriminator javaType="String" column="TYPE">
<case value="T" resultType="Truck">
<result property="boxSize" column="BOXSIZE"/>
</case>
<case value="C" resultType="Car">
<result propety="doorSize" column="DOORSIZE"/>
</case>
</discriminator>
</resultMap>
<select id="findAll" resultMap="vehicleMap">
select * from T_CAR
</select>
上面映射信息,当利用findAll查询时,会查询T_CAR表所有记录,然后MyBatis会根据可鉴别器type字段值分别封装成Truck对象和Car对象放入返回的结果集。