Mybatis的高级映射--多表查询

  前边我们讲过了动态SQL,即在mapper.xml的映射文件中堆存在的statement中的SQL进行if条件判断来拼接SQL,或者使用foreach语句来处理一个list或者数组类型的输入参数类型的数据。今天我们来讲一讲Mybatis的高级映射,即多张表关联的映射。

  1.数据模型的分析

  我们在Hibernate中讲过,有域模型和数据关系模型,而在Mybatsi中,我们在分析数据库中的多张表的关系时,首先要明白该表的业务内容,和重要字段(如主键,外键等),然后确立这张表和其他表的关联关系,最后再从业务层面来分析这张表和其他表的关联关系

  2.一对一映射查询

  ①.确立关联关系:表示表1中的每一条记录在表2中有且仅有一条记录与之对应,这种关系就叫做一对一关联。

  ②.编写SQL语句:先确定主表,再确定从表,然后确定关联条件

  ③.创建对应的POJO类(有resultType和resultMap两种方式)

  ④.编写mapper.xml:注意使用resultMap的方式使用到了<association>节点

  3.一对多关联关系

  ① 确立数据库表的关联关系:即表1的一条记录在表2中可能有多条记录与之对应。

  ② 编写SQL语句:确定主表,确定关联表

  ③ SQL显示的问题:在关联查询的数据中,因为主表和关联表存在着一对多的关联关系,所以有时会出现主表内容重复而关联表内容不重复的情况,为了解决这种情况,我们在主表对应的Java中添加一个List,其中包含的类型时关联表对应的Java类型。

  ④ 编写mapper.xml文件,需要在resultMap节点中使用collection来对应主表对应Java类的List属性。

  4.多对多关联关系

  ① 有时一些表之间的关系在数据级别上并没有主外键关系,但是通过分析他们之间业务的关系可以看到主外键关系。

  ② 在mapper.xml中映射多对多关联关系时,可能就需要将resultMap中的assocaition和collection节点一起使用才可以映射多对多的关联关系。

  ③ 多对多的关联关系就是:表1和表2中的每一条数据记录都可能在对方的表中具有多条数据记录与之对应。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值