mybatis 鉴别其_Mybatis级联:关联、集合和鉴别器的使用

Mybatis中级联有关联(association)、集合(collection)、鉴别器(discriminator)三种。其中,association对应一对一关系、collection对应一对多关系、discriminator可以根据情况选择采用哪个类作为实例,关联不同的结果集。

一、关联

Mybatis的关联有两种方式:

嵌套查询:通过执行另外一个 sql映射语句来返回预期的复杂类型

嵌套结果:使用嵌套结果映射来处理重复了联合结果的子集

场景一:一个部门Department有一个部门经理Leader

select * from department where d_id=#{id}

select * from leader where l_id=#{id}

select * from department d, leader l where d.leader_id = l.l_id and d.d_id=#{id}

场景二:获取指定部门的所有上级部门(获取子结点的所有父结点,一个结点最多只有一个直接父结点)

select id,name,p_id from department where id =#{id}

二、集合

和关联一样,集合也有嵌套查询和嵌套结果两种方式,只是多了个关键字ofType,用来区分JavaBean属性类型和集合包含的类型。

场景:一个部门Department有多个员工Worker

select id,d_name from department where id=#{id}

select w_id,w_name,age from worker where d_id=#{id}

select id,d_name,w_id,w_name,age from department,worker where id=d_id and id=#{id}

三、鉴别器

有时一个数据库查询语句会返回很多不同数据类型的结果集。鉴别器用于处理这种情况,还包括类的继承层次结构,其表现相当于Java中的switch语句。

场景:交通工具Vehicle,有子类小汽车Car,卡车Truck两种类型,根据vehicle表中type字段区别数据,将查询出的数据自动封装成不同类型的对象

select * from vehicle

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值