zoukankan      html  css  js  c++  java
  • MyBatis的关联查询

    关联映射的一对多

      //查询经理角色   以及  该角色下对应的员工集合
        public SmbmsRole getRoleAndUser(Integer id);
    
    
    
     <resultMap id="roleAndUserMapper" type="SmbmsRole">
            <id column="rid" property="rid"></id>
            <result column="roleName" property="roleName"/>
            <!--映射多的一方 property代表实体当中多的一方的属性名      ofType代表集合当中泛型类型-->
            <!-- select 代表执行查询的ID   column所引用的条件列   -->
            <collection property="userList" ofType="SmbmsUser" select="getRoleAndUserMutilSQL" column="rid">
    
            </collection>
        </resultMap>
    
    
    
    
        <!--<select id="getRoleAndUser" resultMap="roleAndUserMapper">
            select u.id,u.userName,u.userRole,r.rid,r.roleName from smbms_user as u,smbms_role as r where u.userRole=r.rid and r.rid=#{id}
        </select>-->
    
        <select id="getRoleAndUser" resultMap="roleAndUserMapper">
            select * from  smbms_role where rid=#{id}
        </select>
        <select id="getRoleAndUserMutilSQL" resultType="SmbmsUser">
            select * from  smbms_user where userRole=#{rid}
        </select>

    关联查询的多对一

    //查询所有用户信息  包含角色信息
    public List<SmbmsUser> getUserList();
    
    
    <resultMap id="userListAndRole" type="SmbmsUser">
            <id column="id" property="id"></id>
            <result column="userName" property="userName"/>
            <association property="role" javaType="SmbmsRole" select="getRole" column="userRole">
                <id column="rid" property="rid"></id>
                <result column="roleName" property="roleName"/>
            </association>
        </resultMap>
        <!--<select id="getUserList" resultMap="userListAndRole">
            select u.id,u.userName,u.userRole,r.rid,r.roleName from smbms_user as u,smbms_role as r where u.userRole=r.rid
        </select>-->
    
    
        <select id="getUserList" resultMap="userListAndRole">
            select * from smbms_user
        </select>
        <select id="getRole" resultType="SmbmsRole">
            select * from smbms_role where rid=#{userRole}
        </select>

    关联查询的多对多

    //查询所有学生信息  以及授课教员
    public List<Student> getStudentInfo();
    
    
    
    <resultMap id="studentAndTeacherMapper" type="Student">
            <id column="stuid" property="stuid"/>
            <result column="stuname" property="stuname"/>
            <collection property="teachers" ofType="Teacher">
                <id column="tid" property="tid"></id>
                <result property="tname" column="tname"/>
            </collection>
        </resultMap>
        <select id="getStudentInfo" resultMap="studentAndTeacherMapper">
            select * from student,teacher,stu_t where student.stuid=stu_t.stuid and teacher.tid=stu_t.tid
        </select>

    关联映射的自查询

     //查询河南省  下的所有子集
    public City getCityAndChildCitys(Integer cid);
    
    
     <resultMap id="CityAndChildCitysMapper" type="City">
            <id column="cid" property="cid"></id>
            <result column="cname" property="cname"/>
            <result column="pid" property="pid"/>
            <collection property="childCitys" ofType="City" select="getCityAndChildCitysMutilSQL" column="cid">
                <id column="cid" property="cid"></id>
                <result column="cname" property="cname"/>
                <result column="pid" property="pid"/>
            </collection>
        </resultMap>
    
       <select id="getCityAndChildCitys" resultMap="CityAndChildCitysMapper">
           select * from city where cid=#{cid}
       </select>
        <select id="getCityAndChildCitysMutilSQL" resultMap="CityAndChildCitysMapper">
           select * from city where pid=#{cid}
       </select>
  • 相关阅读:
    ReentrantReadWriteLock读写锁的使用
    Exchanger的使用
    CyclicBarrier的用法
    Semaphore的使用
    CountDownLatch的使用
    BlockingQueue的使用
    对字符串操作的各种笔试题
    struts2请求过程源码分析
    shell语法使用
    hibernate调用mysql存储过程
  • 原文地址:https://www.cnblogs.com/dabrk/p/11661788.html
Copyright © 2011-2022 走看看