一、前言
这一节,我们将学习一下如何通过MyBatis提供的association关键字来实现关联查询,主要是实现一对一关联查询。有两种实现方式,分别是嵌套查询和分段查询。
二、案例
完整的工程目录如下:
在MySQL数据库新建两张数据库表t_user和t_role,并插入若干条数据
CREATE TABLE t_user (
id int(10) NOT NULL AUTO_INCREMENT,
loginId varchar(20) DEFAULT NULL,
userName varchar(100) DEFAULT NULL,
roleId int(10),
note varchar(255) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
INSERT INTO t_user(loginId,userName,roleId,note) VALUES ('queen', '奎恩', 1, '专门负责提鞋的。。。');
INSERT INTO t_user(loginId,userName,roleId,note) VALUES ('king', '金狮子', 2, '磁性果实能力');
INSERT INTO t_user(loginId,userName,roleId,note) VALUES ('Lucy', '路西', 3, '打败多弗朗明哥。。。');
=========================================================
CREATE TABLE t_role (
id int(10) NOT NULL AUTO_INCREMENT,
roleName varchar(20) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
INSERT INTO t_role(roleName) VALUES ('自定义角色');
INSERT INTO t_role(roleName) VALUES ('前海贼');
INSERT INTO t_role(roleName) VALUES ('未来海贼王');
User实体类
public class User {
// ID,唯一性
private int id;
// 登录ID
private String loginId;
// 用户名
private String userName;
// 角色
private Role role;
// 备注
private String note;
public User(){
}
public User(int id, String loginId, String userName, Role role, String note) {
this.id = id;
this.loginId = loginId;
this.userName = userName;
this.role = role;
this.note = note;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getLoginId() {
return loginId;
}
public void setLoginId(String loginId) {
this.loginId = loginId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
@Override
public String toString() {
return "User [id=" + id +