zoukankan      html  css  js  c++  java
  • mybatis级联(关联)查询

    1.定义四个实体。User   Role    Privilege   Resource,他们之间的对于关系为

    2.需求:我通过用户名username查找出该用户对应的角色以及角色对应的权限和资源

    3.实体

    public class User implements Serializable {
        private String id;
        private String username;
        private String password;
        private Set<Role> role = new HashSet<Role>();
    
    public class Role implements Serializable {
        private String id;
        private String name;
        private String des;
        private Set<Privilege> privilege = new HashSet<Privilege>();
    
    public class Privilege implements Serializable {  private String id;  
        private String name;  private String des;
        private Set<Resource> resource = new HashSet<Resource>();  
        private Privilege parent;  private Set<Privilege> child = new HashSet<Privilege>();
    
    public class Resource implements Serializable {
        private String id;
        private String uri;
        private String des;   

    4.UserMapper.xml的查询方法为

    <resultMap type="user" id="userResult">
      <id column="id" property="id"/>
       <result column="username" property="username"/>
       <collection property="role" javaType="java.util.Set" resultMap="roleResult"/>
    </resultMap>
       
    <resultMap type="role" id="roleResult">
      <id column="rid" property="id"/>
       <result column="rname" property="name"/>
       <result column="rdes" property="des"/>
       <collection property="privilege" javaType="java.util.Set" resultMap="privilegeResult"/>
    </resultMap>
        
    <resultMap type="privilege" id="privilegeResult">
      <id column="pid" property="id"/>
       <result column="pname" property="name"/>
       <collection property="resource" javaType="java.util.Set" resultMap="resourceResult"/>
    </resultMap>
        
    <resultMap type="resource" id="resourceResult">
      <id column="resid" property="id"/>
       <result column="resuri" property="uri"/>
    </resultMap>
    
    <select id="findUserByUserName" parameterType="string" resultMap="userResult">   select u.id,u.username,r.id as rid,r.name as rname,r.des as rdes,p.id as pid,p.name as pname,res.id as resid,res.uri as resuri
      from tb_user u  left join user_role ur on ur.user_id
    =u.id  join tb_role r on r.id=ur.role_id   join role_privilege rp on rp.role_id=r.id   join tb_privilege p on p.id=rp.privilege_id   join tb_resource res on res.privilege_id=p.id   where u.username=#{username} </select>

    5.UserMapper.java定义方法

    @Component
    public interface UserMapper {
        User findUserByUserName(@Param(value="username")String username);
    }
    一对一查询
    <resultMap id="blogResult" type="Blog"> <id property="id" column="blog_id"/> <result property="title" column="blog_title"/> <!-- 和一个用户关联,Blog 类里面属性时author,关联的列是原先的blog.author_id--> <association property="author" column="blog_author_id" javaType="Author" resultMap="authorResult"/> </resultMap> <resultMap id="authorResult" type="Author"> <id property="id" column="author_id"/> <result property="username" column="author_username"/> <result property="password" column="author_password"/> <result property="email" column="author_email"/> <result property="bio" column="author_bio"/> </resultMap>
    <resultMap id="blogResult" type="Blog">  
         <id property="id" column="blog_id"/>  
          <result property="title" column="blog_title"/>  
            
          <!-- 和一个用户关联,Blog 类里面属性时author,关联的列是原先的blog.author_id-->  
          <association property="author"  column="blog_author_id" javaType="Author" >  
                  <id property="id" column="author_id"/>  
                  <result property="username" column="author_username"/>  
                  <result property="password" column="author_password"/>  
                  <result property="email" column="author_email"/>  
                  <result property="bio" column="author_bio"/>  
          </association>  
    </resultMap> 
  • 相关阅读:
    METHODS OF AND APPARATUS FOR USING TEXTURES IN GRAPHICS PROCESSING SYSTEMS
    Display controller
    Graphics processing architecture employing a unified shader
    Graphics-Processing Architecture Based on Approximate Rendering
    Architectures for concurrent graphics processing operations
    Procedural graphics architectures and techniques
    DYNAMIC CONTEXT SWITCHING BETWEEN ARCHITECTURALLY DISTINCT GRAPHICS PROCESSORS
    Thermal zone monitoring in an electronic device
    System and method for dynamically adjusting to CPU performance changes
    Framework for Graphics Animation and Compositing Operations
  • 原文地址:https://www.cnblogs.com/go4mi/p/5784096.html
Copyright © 2011-2022 走看看