Mybatis的多表(多对多)查询
Posted lijiahaoAA
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis的多表(多对多)查询相关的知识,希望对你有一定的参考价值。
示例:用户和角色
一个用户可以有多个角色
一个角色可以赋予多个用户
解决办法
-
建立两张表:用户表,角色表
让用户表和角色表具有多对多的关系。需要使用中间表,中间表包含各自的主键,在中间表中是外键。
-
建立两个实体类:用户实体类和角色实体类
让用户和角色的实体类能体现出来多对多的关系
各自包含对方一个集合引用
-
建立两个配置文件
用户的配置文件
角色的配置文件
-
实现配置
当我们查询用户时,可以同时得到用户所包含的角色信息。
当我们查询角色时,可以同时得到角色所赋予的用户信息。
多对多(可以理解为两个实体类互相一对多)
接口:IRoleDao,IUserDao
IRoleDao
public interface IRoleDao {
//查询所有角色
List<Role> findAll();
}
IUserDao
public interface IUserDao {
?
//查询所有用户,同时获取到用户下所有账户的信息
List<User> findAll();
?
//根据id查询用户信息
User findById(Integer userId);
}
实体类:Role,User
Role
package com.itheima.domain;
?
import java.io.Serializable;
import java.util.List;
?
/**
* @Author: lijiahao
* @Description:
* @Data: Create in 21:31 2020/2/26
* @Modified By:
*/
public class Role implements Serializable {
private Integer roleId;
private String roleName;
private String roleDesc;
?
//多对多的关系映射:一个角色可以对应多个用户
private List<User> users;
?
public List<User> getUsers() {
return users;
}
?
public void setUsers(List<User> users) {
this.users = users;
}
?
public Integer getRoleId() {
return roleId;
}
?
public void setRoleId(Integer roleId) {
this.roleId = roleId;
}
?
public String getRoleName() {
return roleName;
}
?
public void setRoleName(String roleName) {
this.roleName = roleName;
}
?
public String getRoleDesc() {
return roleDesc;
}
?
public void setRoleDesc(String roleDesc) {
this.roleDesc = roleDesc;
}
?
User
package com.itheima.domain;
?
import java.io.Serializable;
import java.util.Date;
import java.util.List;
?
/**
* @Author: lijiahao
* @Description:
* @Data: Create in 21:37 2020/2/22
* @Modified By:
*/
public class User implements Serializable {
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;
?
//添加多对多的映射关系:一个用户可以对应多个角色
private List<Role> roles;
?
public List<Role> getRoles() {
return roles;
}
?
public void setRoles(List<Role> roles) {
this.roles = roles;
}
?
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 Date getBirthday() {
return birthday;
}
?
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
?
public String getSex() {
return sex;
}
?
public void setSex(String sex) {
this.sex = sex;
}
?
public String getAddress() {
return address;
}
?
public void setAddress(String address) {
this.address = address;
}
?