mybatis-鉴别器的使用

mybatis-鉴别器的使用

使用场景:当映射结果中的一个对象属性使用Object类型接收不同的对象时,可以使用鉴别器

  1. 实体类
public class TemplateBaseVo {
    private Integer id;
    private String name;
    private Object content; //接收不同的映射对象
}
  1. 鉴别器的使用
<mapper namespace="com.xxx.shopadmin.dao.TemplateDataMapper">
    <resultMap id="baseMap" type="com.xxx.shopadmin.vo.TemplateBaseVo">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <!-- 鉴别器 -->
        <!-- discriminator标签属性:
        	* javaType:指定列的类型,保证使用相同的Java类型来比较值。
        	* column:要鉴别的字段名。
        -->
        <discriminator javaType="java.lang.Integer" column="type_id">
        	<!-- case标签属性:
        		* value:该值为discriminator标签column属性用来匹配的值。
				* resultMap:当column的值和value的值匹配时,可以配置使用resultMap指定的映射,resultMap优先级高于resultType。
				* resultType:当column的值和value的值匹配时,用于配置使用resultType指定的映射。
        	-->
            <case value="1" resultMap="bannerMap"/>
            <case value="2" resultMap="menuMap"/>
        </discriminator>
    </resultMap>
    <!-- bannerMap -->
    <resultMap extends="baseMap" id="bannerMap" type="com.xxx.shopadmin.vo.TemplateBaseVo">
        <association property="content" column="type_id" select="getBannerVo"/>
    </resultMap>
    <resultMap id="templateBannerVoMap" type="com.xxx.shopadmin.vo.TemplateBannerVo">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="style" column="style"/>
        <result property="height" column="height"/>
        <result property="radius" column="radius"/>
        <result property="x" column="x"/>
        <result property="y" column="y"/>
        <result property="templateViewId" column="template_view_id"/>
    </resultMap>
    <select id="getBannerVo" resultMap="templateBannerVoMap">
        SELECT tb.* FROM template_banner tb, template_view tv
         WHERE tb.template_view_id = tv.id
           AND tv.type_id = #{type_id}
    </select>
    <!-- menuMap -->
    <resultMap extends="baseMap" id="menuMap" type="com.xxx.shopadmin.vo.TemplateBaseVo">
        <association property="content" column="type_id" select="getMenuVo"/>
    </resultMap>
    ......
 </mapper>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值