MyBatis 中的鉴别器(Discriminator)是一种用于处理不同结果映射的机制,通常用于处理具有不同属性的对象。在 MyBatis 3 中,鉴别器被用于根据某个属性的值选择不同的结果映射。

以下是一个简单的例子,展示了如何在 MyBatis 中使用鉴别器:
<resultMap id="animalResultMap" type="Animal">
    <id property="id" column="id" />
    <result property="name" column="name" />
    
    <!-- 使用鉴别器 -->
    <discriminator javaType="int" column="type">
        <!-- 指定鉴别值和对应的结果映射 -->
        <case value="1" resultMap="dogResultMap" />
        <case value="2" resultMap="catResultMap" />
        <!-- 可选的默认结果映射 -->
        <otherwise resultMap="defaultResultMap" />
    </discriminator>
</resultMap>

<resultMap id="dogResultMap" type="Dog">
    <!-- Dog 类的属性映射 -->
    <result property="breed" column="breed" />
</resultMap>

<resultMap id="catResultMap" type="Cat">
    <!-- Cat 类的属性映射 -->
    <result property="color" column="color" />
</resultMap>

<resultMap id="defaultResultMap" type="Animal">
    <!-- 默认情况下的属性映射 -->
    <result property="defaultProperty" column="defaultColumn" />
</resultMap>

<select id="selectAnimal" resultMap="animalResultMap">
    SELECT * FROM animals
</select>

在这个例子中,animalResultMap 是一个包含鉴别器的结果映射。根据 type 列的值,鉴别器会选择不同的结果映射,即 dogResultMap、catResultMap 或 defaultResultMap。

这样,当从数据库中查询动物信息时,根据动物的类型,MyBatis 将选择合适的结果映射来映射到对应的对象中。


转载请注明出处:http://www.zyzy.cn/article/detail/7014/MyBatis