博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关联查询中的一对一查询。通过第一种方式也就是自动映射的方式查询所有订单信息,关联查询下单用户信息。(由于需要创建中间类,这种方法在实际开发中已经不再使用)...
阅读量:5149 次
发布时间:2019-06-13

本文共 2940 字,大约阅读时间需要 9 分钟。

商品订单数据模型:

一对一查询:查询所有订单信息,关联查询下单用户信息。

注意:因为一个订单信息只会是一个人去下的订单,所以从查询订单出发关联查询用户信息为一对一查询。如果从用户信息出发查询用户下的订单信息则为一对多查询,因为一个用户可以下多个订单。

1.在UserMapper接口中创建方法:

  public List<UserOrders> findOrderAndUser();

2.定义中间类UserOrders,因为查询的结果中既包含User中的信息也包括Orders中的信息,所以我们创建一个UserOrders类来包含这两个表中的所有属性。

  由于两个表中的属性太多,所以我们定义两个类,定义类Orders来存储Orders中的属性信息:

package com.huida.po;import java.util.Date;public class Orders {    private Integer id;    private Integer userId;    private String number;    private Date createtime;    private String note;    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public Integer getUserId() {        return userId;    }    public void setUserId(Integer userId) {        this.userId = userId;    }    public String getNumber() {        return number;    }    public void setNumber(String number) {        this.number = number;    }    public Date getCreatetime() {        return createtime;    }    public void setCreatetime(Date createtime) {        this.createtime = createtime;    }    public String getNote() {        return note;    }    public void setNote(String note) {        this.note = note;    }    }

  定义UserOrders类来继承Orders类,同时在这个类中定义User表中的属性:

package com.huida.po;import java.util.Date;public class UserOrders extends Orders{    private int uid;    private String username;    private String sex;    private Date birthday;    private String address;    public int getUid() {        return uid;    }    public void setUid(int uid) {        this.uid = uid;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }    public Date getBirthday() {        return birthday;    }    public void setBirthday(Date birthday) {        this.birthday = birthday;    }    public String getAddress() {        return address;    }    public void setAddress(String address) {        this.address = address;    }    }

3.在UserMapper.xml中进行配置:

  这里应该注意的是:

  1.返回类型应该为UserOrders类型

  2.select后面的属性应该与UserOrders中定义的属性名相同,否则查找不到。

  3.b.id uid的意思是:b.id的别名为uid。

4.测试代码:

@Test    public void testfindOrdersAndUsers(){        //创建SqlSession        SqlSession openSession=factory.openSession();        //通过会话的getMapper方法来实例化接口(实现类的对象)        UserMapper userMapper=openSession.getMapper(UserMapper.class);//参数放接口的字节码文件        List
list=userMapper.findOrderAndUser(); for(UserOrders userOrders:list){ System.out.println(userOrders.getUsername()+"...."+userOrders.getNumber()); } }

 5.小结:

  定义专门的po类作为输出类型,其中定义了sql查询结果集所有的字段。此方法较为简单,企业中使用普遍。

  

转载于:https://www.cnblogs.com/wyhluckdog/p/10156805.html

你可能感兴趣的文章
HashPump用法
查看>>
cuda基础
查看>>
Vue安装准备工作
查看>>
oracle 创建暂时表
查看>>
201421410014蒋佳奇
查看>>
Xcode5和ObjC新特性
查看>>
LibSVM for Python 使用
查看>>
Centos 7.0 安装Mono 3.4 和 Jexus 5.6
查看>>
CSS属性值currentColor
查看>>
java可重入锁reentrantlock
查看>>
浅谈卷积神经网络及matlab实现
查看>>
解决ajax请求cors跨域问题
查看>>
《收获,不止Oracle》pdf
查看>>
Real-Time Rendering 笔记
查看>>
如何理解HTML结构的语义化
查看>>
Activity之间的跳转:
查看>>
实验四2
查看>>
多路复用
查看>>
Python数据可视化之Pygal(雷达图)
查看>>
Java学习笔记--字符串和文件IO
查看>>