mybatis多对多

Posted 西门夜说

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis多对多相关的知识,希望对你有一定的参考价值。

这里我们以用户 user 表和 角色role 表为例,假定一个用户能被分配成多重角色,而一种角色也能分给多个用户,故用户和角色构成多对多的关系

需求:给定角色id,查询这个角色所属的所有用户信息

①、在数据库中建立相应的表

  user 表

  role 表

 

 

 两者之间的关联表user_role 

 

 

 

public class User {
    //用户ID
    public int id;
    //用户姓名
    public String username;
    //用户性别
    public String sex;
    //一个用户能被分配多种角色
    public List<Role> roles;
    
    //set,get......
}
public class Role {
	public int id;
	public String name;
	//一种角色包含多个用户
	public List<User> users;

	//set,get......

}

 中间表

public class User_Role {
    private User user;
    private Role role;
    //set,get
}

创建 UserMapper 接口和 UserMapper.xml 文件

UserMapper 接口

public interface UserMapper {
	
	//给定一个角色id,要得到具有这个角色的所有用户信息
	public List<User> getUserByRoleId(int roleId);

}

UserMapper.xml 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="many.to.many.mapper.UserMapper">
   <resultMap type="com.ys.po.User" id="getUserMap">
	<id column="id" property="id"/>
	<result column="username" property="username"/>
	<result column="sex" property="sex"/>
  </resultMap>
  <select id="getUserByRoleId" resultMap="getUserMap"> 
    select * from user_role ur,user u where ur.user_id=u.id and ur.role_id=#{id}
  </select>
</mapper>

  

  

以上是关于mybatis多对多的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis一对一,一对多,多对多代码

mybatis映射 一对一,一对多,多对多高级映射

MyBatis整合Spring开发+MyBatis多对多关联查询

mybatis学习笔记(11)-多对多查询

MyBatis注解开发之多对多查询

MyBatis一对多,多对一,多对多