zoukankan      html  css  js  c++  java
  • 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>

      

      

  • 相关阅读:
    DNS隧道
    记录上锁(fcntl)
    posix对线程的调整
    MySQL创建存储过程
    MySQL的WHERE语句中BETWEEN与IN的用法和他们的区别
    mysql中distinct
    线程的工作方式-流水线
    可执行程序的生成过程
    线程高级编程
    time函数及其用法
  • 原文地址:https://www.cnblogs.com/yscec/p/12045239.html
Copyright © 2011-2022 走看看