以下是一个简单的例子,展示了如何在 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.pingtaimeng.com/article/detail/7014/MyBatis