一对一查询
根据上面我们分析的订单商品数据模型(链接: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无法实现延迟加载。
转载请注明出处:http://blog.csdn.net/acmman/article/details/46602553