【MyBatis框架】高级映射-一对一查询
来源:互联网 发布:三星note8网络参数 编辑:程序博客网 时间:2024/05/15 13:10
一对一查询
根据上面我们分析的订单商品数据模型(链接:12.订单商品数据模型-分析思路.txt),我们来写一下有关一对一的查询,分别使用了resultType和resultMap指定输出参数类型
1.一对一查询使用resultType指定输出参数类型
1.1需求
查询订单信息,关联查询创建订单的用户信息
1.2resultType
1.2.1sql语句
确定查询的主表:订单表
确定查询的关联表:用户表
关联查询使用内链接?还是外链接?
由于orders表中有一个外键(user_id),通过外键关联查询用户表只能查询出一条记录,可以使用内链接。
1.2.2创建pojo
将上边sql查询的结果映射到pojo中,pojo中必须包括所有查询列名。
下面写Orders.java对映数据库表单
发现原始的Orders.java不能映射全部字段,需要新创建的pojo。
创建 一个pojo继承包括查询字段较多的po类。
1.2.3mapper.xml
OrdersCustomMapper.xml:
在SqlMapConfig.xml中我们扫描了mapper包所有的Mapper映射文件,所以这里就不在SqlMapConfig.xml中单独加载Mapper映射文件了。
1.2.4mapper.java
测试:
测试结果:
张三|男|河南焦作
张三|男|河南焦作
刘莉莉|女|山东威
输出日志:
2.一对一查询使用resultMap指定输出参数类型
2.1sql语句
同resultType实现的sql
2.2使用resultMap映射的思路
使用resultMap将查询结果中的订单信息映射到Orders对象中,在orders类中添加User属性,将关联查询出来的用户信息映射到orders对象中的user属性中。
2.3需要Orders类中添加user属性
2.4mapper.xml
2.4.1定义resultMap
2.4.2statement定义
2.4.3mapper.java
测试结果:
张三|男|河南焦作
张三|男|河南焦作
刘莉莉|女|山东威海
日志输出:
3.resultType和resultMap实现一对一查询小结
实现一对一查询:
resultType:使用resultType实现较为简单,如果pojo中没有包括查询出来的列名,需要增加列名对应的属性,即可完成映射。
如果没有查询结果的特殊要求建议使用resultType。
resultMap:需要单独定义resultMap,实现有点麻烦,如果对查询结果有特殊的要求(比如pojo里面又含有pojo),使用resultMap可以完成将关联查询映射pojo的属性中。
根据上面我们分析的订单商品数据模型(链接:12.订单商品数据模型-分析思路.txt),我们来写一下有关一对一的查询,分别使用了resultType和resultMap指定输出参数类型
1.一对一查询使用resultType指定输出参数类型
1.1需求
查询订单信息,关联查询创建订单的用户信息
1.2resultType
1.2.1sql语句
确定查询的主表:订单表
确定查询的关联表:用户表
关联查询使用内链接?还是外链接?
由于orders表中有一个外键(user_id),通过外键关联查询用户表只能查询出一条记录,可以使用内链接。
1.2.2创建pojo
将上边sql查询的结果映射到pojo中,pojo中必须包括所有查询列名。
下面写Orders.java对映数据库表单
发现原始的Orders.java不能映射全部字段,需要新创建的pojo。
创建 一个pojo继承包括查询字段较多的po类。
1.2.3mapper.xml
OrdersCustomMapper.xml:
在SqlMapConfig.xml中我们扫描了mapper包所有的Mapper映射文件,所以这里就不在SqlMapConfig.xml中单独加载Mapper映射文件了。
1.2.4mapper.java
测试:
测试结果:
张三|男|河南焦作
张三|男|河南焦作
刘莉莉|女|山东威
输出日志:
2.一对一查询使用resultMap指定输出参数类型
2.1sql语句
同resultType实现的sql
2.2使用resultMap映射的思路
使用resultMap将查询结果中的订单信息映射到Orders对象中,在orders类中添加User属性,将关联查询出来的用户信息映射到orders对象中的user属性中。
2.3需要Orders类中添加user属性
2.4mapper.xml
2.4.1定义resultMap
2.4.2statement定义
2.4.3mapper.java
测试:
测试结果:
张三|男|河南焦作
张三|男|河南焦作
刘莉莉|女|山东威海
日志输出:
3.resultType和resultMap实现一对一查询小结
实现一对一查询:
resultType:使用resultType实现较为简单,如果pojo中没有包括查询出来的列名,需要增加列名对应的属性,即可完成映射。
如果没有查询结果的特殊要求建议使用resultType。
resultMap:需要单独定义resultMap,实现有点麻烦,如果对查询结果有特殊的要求(比如pojo里面又含有pojo),使用resultMap可以完成将关联查询映射pojo的属性中。
resultMap可以实现延迟加载,resultType无法实现延迟加载。
0 0
- 【MyBatis框架】高级映射-一对一查询
- 【MyBatis框架】高级映射-一对一查询
- Mybatis高级映射一对一查询
- 【mybatis基础】高级映射:一对一查询
- 【Mybatis】---高级映射之一对一查询
- MyBatis高级映射(一对一查询)
- MyBatis高级映射之一对一查询
- MyBatis-高级映射:一对一
- MyBatis高级映射:一对一
- Mybatis(高级映射,一对一)
- mybatis高级输出映射(一对一查询输出映射)
- 【MyBatis学习08】高级映射之一对一查询
- mybatis学习之高级映射中的一对一查询
- 【MyBatis学习08】高级映射之一对一查询
- 【MyBatis学习08】高级映射之一对一查询
- Mybatis学习(07)-高级映射之一对一查询
- 【MyBatis学习08】高级映射之一对一查询
- Mybatis高级映射(一对一的查询以及一对多)
- 莫队算法
- HashMap实现原理分析
- 010editor脚本语法深入分析
- UE使用
- Android Support Library-FloatingActionButton
- 【MyBatis框架】高级映射-一对一查询
- CF 461C 模拟
- AsyncTask模拟下载学习
- shiro authorizingrealm实现认证授权
- 采用_beginthread/_beginthreadex函数创建多线程
- Node.js基础知识杂烩
- 序列动画和图片内存问题
- 由微软100题“求和不用for while”引出的static类成员的知识
- 第4章第1节练习题6 二叉树叶子节点链接成单链表