MyBatis复杂映射开发之一对一查询
一对一查询需求
用户表和订单表的关系为:一个用户可以有多个订单,一个订单只能从属于一个用户
一对一查询需求:查询一个订单,同时查询出该订单所对应的用户
对应的sql语句:select * from orders o,user u where o.uid=u.id
查询结果如下:
id | ordertime | total | uid | id | username | password | birthday |
---|---|---|---|---|---|---|---|
1 | 2022-03-17 17:15:33 | 3000 | 1 | 1 | lucy | 123 | 2022-03-17 17:15:56 |
2 | 2022-03-17 17:15:33 | 4000 | 1 | 1 | lucy | 123 | 2022-03-17 17:15:56 |
3 | 2022-03-17 17:15:33 | 5000 | 2 | 2 | tom | 123 | 2022-03-17 17:15:56 |
需求分析
具体实现
创建User和Order实体
User
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17/**
* 用户信息
*
* @name: User
* @author: terwer
* @date: 2022-05-08 17:41
*/
class User {
var id: Int? = null
var username: String? = null
override fun toString(): String {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
'}'
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35/**
* 用户信息
*
* @name: User
* @author: terwer
* @date: 2022-03-17 17:41
**/
public class User {
private Integer id;
private String username;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
'}';
}
}Order
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23/**
* 订单
*
* @name: Order
* @author: terwer
* @date: 2022-05-08 17:42
*/
class Order {
var id: Int? = null
var orderTime: String? = null
var total: Double? = null
// 代表当前订单属于哪一个用户
var user: User? = null
override fun toString(): String {
return "Order{" +
"id=" + id +
", orderTime='" + orderTime + '\'' +
", total=" + total +
", user=" + user +
'}'
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57/**
* 订单
*
* @name: Order
* @author: terwer
* @date: 2022-03-17 17:42
**/
public class Order {
private Integer id;
private String orderTime;
private Double total;
// 代表当前订单属于哪一个用户
private User user;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getOrderTime() {
return orderTime;
}
public void setOrderTime(String orderTime) {
this.orderTime = orderTime;
}
public Double getTotal() {
return total;
}
public void setTotal(Double total) {
this.total = total;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String toString() {
return "Order{" +
"id=" + id +
", orderTime='" + orderTime + '\'' +
", total=" + total +
", user=" + user +
'}';
}
}
创建OrderMapper接口
1 | /** |
1 | /** |
配置OrderMapper.xml
1 |
|
另外一种配置方法
1 | <mapper namespace="com.terwergreen.mapper.OrderMapper"> |
测试结果
1 |
|
1 |
|
文章更新历史
2022/05/08 feat:新增Kotlin支持