MyBatis:学习笔记(3)——关联查询

MyBatis:学习笔记(3)——关联查询

波及查询

了然联结

  SQL最有力的功力之一在于我们得以在数额查询的推行中能够使用联合,来将多少个表中的多少作为完整进行筛选

  模拟一个不难易行的在线商品购物系统,一旦大家将用户音讯和订单新闻都保留在user表中,那样就不存在联结关系,因为我们仅仅操作一张表就好

  可是那是老大不明智的取舍,举例来说,一个用户可以享有两个订单,假诺保留在一个表中,势必会导致用户新闻的高频出现,因为每一个订单绑定的用户音信都以相同的。

  所以我们尽量要将区其余音信存储与分歧的表中,不过单独像下边这样,数据交互独立,查询将会特别困难。

    图片 1

  所以,我们在创设表的时候就相应为统一准备条件,像下边那样,那样我们就在格局上成立了一种关系关系

    图片 2

始建联结

  大家只是为着表明和引入关联的定义,就差不多完成关系的SQL语句

    图片 3

  结果如图所示

    图片 4

 一对一询问

使用ResultType

  1.需求

    为了更好的接头一对一查询,大家规划如下须求:查询订单新闻,并涉嫌查询创造该订单的用户音信。

  2.SQL语句:

    图片 5

  3.POJO:

   图片 6

说明:

  将上面SQL查询的结果集映射到POJO中,
所以该POJO必须带有所有的询问列名。不过原始的Orders.java不可能映照全部字段,要求新创设或然扩张原始的POJO,来含有所有的查询列。

     4.编纂映射文件:Mapper.xml

           图片 7

  5.施用动态代理的法门

    图片 8

  6.测试

    图片 9

使用resultMap

  1.需求

    为了更好的明白一对一询问,大家规划如下需要:查询订单信息,并涉嫌查询创制该订单的用户音信。

  2.SQL语句:

    图片 10

  3.平素照射到Order对象中**

    图片 11

  说明:

    使用resultMap将查询结果中的订单音信映射到Orders对象中,在Orders类中添加user属性,将关乎查询到的用户新闻映射到Orders对象中的user属性中。

  4.定义ResultMap

     图片 12

  5.定义StateMent

    图片 13

  6.测试

    图片 14

一对多询问

  1.需求

    为了更好的明白一对多询问,大家规划如下必要:查询订单音讯,并提到查询订单的具有订单明细音信。

  2.SQL语句    

    图片 15

  3.直接照射到Order对象中

    图片 16

  4.resultMap的定义

    图片 17

  说明

    collection中,要利用ofType属性,表示list集合属性中的POJO类型。  

  5.定义StateMent

    图片 18

  6.测试

    Orders{id=3,
userId=1, number=’1000010′, createtime=Wed Feb 04 13:22:35 CST 2015,
note=’null’, user=User{id=1, username=’王五’, sex=’2′, birthday=null,
address=’null’}, details=[OrderDetail{id=1,
orders_id=null, items_id=1, items_num=1}, OrderDetail{id=2,
orders_id=null, items_id=2, items_num=3}]}
    Orders{id=4, userId=1,
number=’1000011′, createtime=Tue Feb 03 13:22:41 CST 2015, note=’null’,
user=User{id=1, username=’王五’, sex=’2′, birthday=null,
address=’null’}, details=[OrderDetail{id=3,
orders_id=null, items_id=3, items_num=4}, OrderDetail{id=4,
orders_id=null, items_id=2, items_num=3}]}

 总结

   resultMap与resultType的区别:点击查阅  

 

  

  

 

网站地图xml地图