★学习目标:
1、熟悉多对多查询
2、能够在MyBatis中实现多对多关联查询
★思考任务:
思考,如何在MyBatis中实现多对多关联查询
★任务学习
★知识要点:
在数据库中,表与表之间的多对多关联关系通常使用一个中间表来维护。以4.4节中使用的订单表tb_orders和商品表tb_product为例,这两个表之间的关联关系使用了一个中间表tb_ordersitem来维护,订单表tb_orders和商品表tb_product,都与中间表tb_ordersitem形成了一对多关联关系,即中间表tb_ordersitem将订单表tb_orders和商品表tb_product拆分成了两个一对多的关联关系。
接下来,以4.4节中使用的订单表tb_orders、商品表tb_product和中间表tb_ordersitem为例,详细讲解tb_ orders和tb_product数据表之间基于注解的多对多关联查询,具体步骤如下。
(1)本案例使用4.3节中的Orders类和4.4节中的Product类作为持久类
并在订单持久化类(Orders.java)中增加商品集合的属性及其对应的getter/setter方法,并修改Orders类和Product类中的toString()方法。
(2)
1)在项目的com.itheima.dao包下创建ProductMapper接口,在该接口编写selectProductByOrdersId()方法,通过user_id查询用户对应的订单信息。
2)在项目的com.itheima.dao包下的OrdersMapper接口中添加selectOrdersById()方法,该方法用于通过id查询订单信息。
(3)在核心配置文件mybatis-config.xml中的<mappers>元素下引入ProductMapper和OrdersMapper接口,将这两个接口加载到核心配置文件中。
<mappers>元素引入XML文件的顺序
注意:由于mybatis-config.xml文件中的扫描方式是从上往下扫描,所以<mappers>元素下引入ProductMapper和OrdersMapper接口的位置,必须在引入ProductMapper.xml和OrdersMapper.xml文件位置前面,否则程序将会首先读取到引入的ProductMapper.xml和OrdersMapper.xml文件,程序将会报错。
(4)为了验证上述配置,可以在测试类MyBatisTest中,编写测试方法selectOrdersByIdTest()。

