MyBatis-学习笔记(3)——关联查询
2017-02-02 15:48
190 查看
MyBatis:学习笔记(3)——关联查询
关联查询
理解联结
SQL最强大的功能之一在于我们可以在数据查询的执行中可以使用联结,来将多个表中的数据作为整体进行筛选。模拟一个简单的在线商品购物系统,如果我们将用户信息和订单信息都保存在user表中,这样就不存在联结关系,因为我们仅仅操作一张表就好。
但是这是非常不明智的选择,举例来说,一个用户可以拥有多个订单,如果保存在一个表中,势必会导致用户信息的多次出现,因为每个订单绑定的用户信息都是相同的。
所以我们尽量要将不同的信息存储与不同的表中,但是单单像下面这样,数据相互独立,查询将会更加不便。
所以,我们在创建表的时候就应该为联结准备条件,像下面这样,这样我们就在形式上创建了一种关联关系:
创建联结
我们只是为了解释和引入关联的概念,就简单实现关联的SQL语句:结果如图所示:
一对一查询
使用ResultType
1.需求:为了更好的理解一对一查询,我们设计如下需求:查询订单信息,并关联查询创建该订单的用户信息。
2.SQL语句:
3.POJO:
说明:
将上边SQL查询的结果集映射到POJO中, 所以该POJO必须包含所有的查询列名。但是原始的Orders.java不能映射全部字段,需要新创建或者扩展原始的POJO,来包含所有的查询列。
4.编写映射文件:Mapper.xml
5.使用动态代理的方法:
6.测试
使用resultMap
1.需求:为了更好的理解一对一查询,我们设计如下需求:查询订单信息,并关联查询创建该订单的用户信息。
2.SQL语句:
3.[b]直接映射到Order对象中[/b]
[b]
[/b]
说明:
使用resultMap将查询结果中的订单信息
4000
映射到Orders对象中,在Orders类中添加user属性,将关联查询到的用户信息映射到Orders对象中的user属性中。
4.定义ResultMap
5.定义StateMent
6.测试
一对多查询
1.需求为了更好的理解一对多查询,我们设计如下需求:查询订单信息,并关联查询创建该订单的订单明细信息。
2.SQL语句
3.直接映射到Order对象中
4.resultMap的定义
说明:
collection中,要使用ofType属性,表示list集合属性中的POJO类型。
5.定义StateMent
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的区别:点击查看相关文章推荐
- MyBatis:学习笔记(3)——关联查询
- 关联查询---Mybatis学习笔记(九)
- MyBatis-学习笔记(3)——关联查询
- MyBatis-学习笔记(3)——关联查询
- Mybatis学习笔记四:关联查询
- MyBatis:学习笔记(3)——关联查询
- Java学习笔记32:Spring整合mybatis使用
- mybatis学习笔记2-SQL的简单应用
- mybatis学习笔记---入门
- MyBatis 学习笔记
- MyBatis多参数传递之默认命名方式示例——MyBatis学习笔记之十二 推荐
- mybatis学习笔记--常见的错误
- MyBatis MapperScannerConfigurer配置——MyBatis学习笔记之八 推荐
- MyBatis For .NET学习笔记[3]:工作原理解析
- MyBATIS3入门学习笔记
- Mybatis学习笔记三(Mybatis SQL映射文件)
- Mybatis学习笔记一(环境搭建)
- MyBatis For .NET学习笔记[2]:配置环境
- MyBatis collection的两种形式——MyBatis学习笔记之九
- mybatis 学习笔记