系列文章目录
实习笔记 —— Spring基础
实习笔记 —— IOC反转控制(xml配置文件 + 注解)
实习笔记 —— AOP开发I
实习笔记 —— AOP开发II(AOP中Advice的类型)
实习笔记 —— MyBatis I (MyBatis基础)
实习笔记 —— MyBatis II (MyBatis基本数据库操作)
实习笔记 —— MyBatis III(输入/输出映射)
实习笔记 —— MyBatis IV(动态SQL)
一、一对一查询
“实现以订单为主体,每个订单(一)输出其对应的用户(一)的信息”
刚学的时候没理解一对一查询到底是什么意思,学完一对多之后一对比就知道了。
其实就是实现SQL中的如下语句:
SELECT o.*, u.username, u.address, u.birthday, u.gender
FROM orders o
LEFT JOIN user u
ON o.user_id = u.id
在本地数据库中的查询结果:
1.方法一:使用创建实体类的常规方法
left…join… 需要创建二个表结果的实体类OrdersUser
直接上步骤:
①在pojo(entity)包下创建订单表(order)的实体类:
根据数据库的属性声明类的私有属性(点击设计表)
注意 user_id 是对应 user 表的外键。
package com.high.demo.pojo;
import java.util.Date;
public class Orders {
//订单号
private Integer id;
//外键-用户ID
private Integer user_id;
//商品编号(二维码)
private String number;
//订单创建时间
private Date createtime;
//备注信息
private String note;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getUser_id() {
return user_id;
}
public void setUser_id(Integer user_id) {
this.user_id = user_id;
}
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;
}
@Override
public String toString() {
return "Orders [id=" + id + ", user_id=" + user_id + ", number=" + number + ", createtime=" + createtime
+ ", note=" + note + "]";
}
}
②为查询结果创建实体类:
其实本质上查询结果就是创建了一个新表,新的表自然需要一个实体类,只不过为了简便我们没有真的创建新表。
package com.high.demo.pojo;
import java.util.Date;
public class OrdersUser {
//order表
//订单号
private Integer id;
//外键-用户ID
private Integer user_id;
//商品编号(二维码)
private String number;
//订单创建时间
private Date createtime;
//备注信息
private String note;
//user表
private String username;
private Date birthday;
private String gender;
private String address;
public Integer getId(