前言
我们进行数据库查询时往往需要的不止一张表的数据,需要将多张表的数据一起查询出来,大家学习过数据库的连接查询,那么在MyBatis中如何将有关系的多张表数据进行关联查询呢 。
表的结构
商品和订单是典型的一对多关系,下面的案例我们将以商品表和订单表作为示例,演示如何配置最常见的一对多关系,下面是两张表的结构:
商品表:
文章插图
订单表:
文章插图
实体类的设计
一种商品有多个订单,每个订单对应一种商品,在实体类中体现这个关系 。
订单实体类:
文章插图
商品实体类:
文章插图
MApper接口设计
这里我们只介绍关联查询,所以只定义了基本的查询方法
文章插图
【MyBatis中如何将有关系的多张表数据进行关联查询】
文章插图
collection标签
接下来就是重点了,我们在商品类中定义了订单集合属性orders,那么这个集合的数据如何进行查询呢?这就需要我们在mapper文件中使用collection标签 。
collection标签用在resultMap标签中,用于配置集合的查询,用法是:
<collection property="集合属性名" column="传入查询方法的列名" select="查询集合所调用的方法"/>
示例:
文章插图
collection的意思是:
当商品对象需要orders集合时,就会调用OrderDAO的selectByGoodsId按商品id查询所有订单,商品id就是当前商品的goods_id值 。
association标签
association标签的用法类似于collection,用于配置一对一的关系,每个订单中有一个商品对象goods,这个对象查询可以用association来进行配置 。
用法:
<association property="对象属性名" column="传入查询方法的列名" select="查询对象所调用的方法"/>
示例:
文章插图
association的意思是:
当订单对象需要goods对象时,就调用GoodsDAO的selectById按商品id查询商品,此商品id就是订单中的外键列order_goods_id 。
单元测试
文章插图
文章插图
总结
MyBatis中配置表的关联关系,需要在resultMap中配置collection或association标签
collection配置的是一对多关系,property属性是集合的名称,select配置的是查询集合的方法,column配置查询方法的参数对应的列名
association配置的是一对一关系,property属性是对应对象的名称,select配置的是查询集合的方法,column配置查询方法的参数对应的列名 。更多JAVA学习资料,欢迎观“武汉千锋”微信公众号!
推荐阅读
- Windows server 2008 R2如何安装DNS服务器
- 不需要软件,如何简单实现内外网自由切换?
- 如何查看其他人在你的WiFi上浏览的内容?
- 如何部署 H5 游戏到云服务器?
- 如何辨别真假抹茶
- 老班章普洱中的霸王
- php如何生成word并下载
- 如何鉴别普洱茶的品质
- JS如何判断屏幕大小
- 集合 一文了解 JavaScript 中的 Set