三分钟带你了解mybatis关联映射(案例分析一对一,多对多)

您所在的位置:网站首页 双向映射实验总结 三分钟带你了解mybatis关联映射(案例分析一对一,多对多)

三分钟带你了解mybatis关联映射(案例分析一对一,多对多)

#三分钟带你了解mybatis关联映射(案例分析一对一,多对多)| 来源: 网络整理| 查看: 265

------------------------------------------------原创不易,如若喜欢,请点一点赞吧!---------------------------------------------

通过前几篇文章的学习,我们已经大致了解了mybatis基础知识,并可以使用基础的sql语句来操作数据库。在关系型数据库中,表与表之间存在着一对一,一对多,多对多这几种映射关系。映射关系是mybatis的核心知识,在以后的工作中,我们会经常遇到以上几种映射关系,因此,我们很有必要学好映射关系。

一、mybatis 一对一映射关系 1.一对一映射关系 什么是一对一映射关系?:从数据库的角度出发就是在任意一个表中引入另外一个表的主键作为外键。在本类的定义中定义另外一个类的对象。在mybatis中,我们通过resultMap元素的子元素 association来进行处理。association元素具有以下配置属性 属性名称作用property指定映射到的实体类对象属性,与表字段一一对应column指定表中对应的字段select指定引入嵌套查询的子SQL 语句,该属性用于关联映射中的嵌套查询。javaType指定映射到实体对象属性的类型 在mybatis中设定了两种查询方式:嵌套查询及嵌套结果查询方式 select p.*,idcard.code from student p,idcard idcard where p.card_id = idcard.id 二、mybatis 一对多映射关系 1.一对多映射关系

什么是一对多关系:一对多关系就是表A中一条数据对应表B中的多条数据,例如,用户和订单之间的关系,一个用户可以有多个订单信息。

在mybatis中,我们通过resultMap元素的子元素 collection来进行处理。

collection元素具有以下配置属性

属性名称作用property指定映射到的实体类对象属性,与表字段一一对应column指定表中对应的字段select指定引入嵌套查询的子SQL 语句,该属性用于关联映射中的嵌套查询。javaType指定映射到实体对象属性的类型ofTypeofType 属性与javaType 属性对应,它用于指定实体对象中集合类属性所包含的元素类型。 需要注意的是:在一对多映射和多对多映射中,collection 元素属行中使用的是ofType属性来指定实体对象,而不是使用JavaType属性。 2.【案例分析】

案例描述: 以用户和订单为例,若一个用户有用三个订单,则如何通过查询用户来获取用户对应的订单信息。 【分析】: 一个用户可以有多个订单信息。这就构成了一对多的映射关系。通过mybatis中的一对多映射关系,在mapper.xml文件中写入对应语句后则可完成该需求。

映射文件代码:OrdersMapper.xml select u.*,o.id as orders_id,o.number from user u,orders o where u.id = o.user_id and u.id=#{id} 三、mybatis 多对多映射关系 1.多对多映射关系 什么是多对多关系: 一对多关系就是表A中一条数据对应表B中的多条数据,例如,用户和订单之间的关系,一个用户可以有多个订单信息。在mybatis中,与一对多映射一致,我们通过resultMap元素的子元素 collection来进行处理。这里就不再多collection元素属性与上文一致。 需要注意的是:在一对多映射和多对多映射中,collection 元素属行中使用的是ofType属性来指定实体对象,而不是使用JavaType属性。 2.【案例分析】

案例描述: 以订单和商品为例,若一个订单有用三个商品,一个商品有五个不同的订单,则如何通过查询订单来获取对应的商品信息,如何通过查询商品来获取对应的订单信息。 【分析】: 一个商品可以有多个订单信息。一个订单可以有多个商品信息。这就构成了多对多的映射关系。一般来说,在多对多的映射中,会通过生成中间表的方式来处理,通过一个中间表保存订单信息和商品信息。但Mapper.xml中的resultMap 元素的写法与一对多基本一致。

映射文件代码:OrdersMapper.xml select o.*,p.id as pid,p.name,p.price from orders o,product p,ordersitem oi where oi.orders_id=o.id and oi.product_id=p.id and o.id=#{id}

---------------------------------------------------------------------------------------------------公众号内有更多干货。欢迎关注!

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3