mybatis 一对一、一对多和多对多查询实例代码

时间:2022-09-26 21:55:21

关键字:association 一对一映射(一个班级只有一个班主任)

?
1
2
3
4
5
6
7
8
9
10
11
<select id="getclass" parametertype="int" resultmap="classesresultmap"
  select * from class c,teacher t where c.teacher_id=t.t_id and c.c_id=#{id} 
</select> 
<resultmap type="com.lcb.user.classes" id="classesresultmap"
  <id property="id" column="c_id"/> 
  <result property="name" column="c_name"/> 
  <association property="teacher" javatype="com.lcb.user.teacher"
    <id property="id" column="t_id"/> 
    <result property="name" column="t_name"/> 
  </association> 
</resultmap>

关键字:collection 一对多映射(一个老师有多个学生)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<resultmap type="teacher" id="teachermaps"
    <id column="id" property="id"/> 
    <result column="name" property="name"/> 
    <result column="class_name" property="classname"/> 
    <collection property="students" oftype="student" select="getstudents" column="id"
    </collection> 
  </resultmap> 
  <!-- 查询所有的老师级各自的所有学生 --> 
  <select id="getallteacher" parametertype="teacher" resultmap="teachermaps"
    select 
      t.id, 
      t.name, 
      t.class_name 
    from 
      teacher t 
  </select> 
  <select id="getstudents" parametertype="int" resulttype="student"
    select  
      s.id, 
      s. name, 
      s.class_name as classname 
    from student s 
    where teacher_id = #{id} 
  </select>

    关键字:association 多对一映射(多个人属于一个国家)

             多对一相当于一对多,也可以使用collection

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<select id="selectcountry" resulttype="country"
  select cid,cname from country where cid=#{ooo} 
</select> 
<resultmap type="people" id="peoplemapper2"
  <id column="pid" property="pid"/> 
  <result column="pname" property="pname"/> 
  <association property="country"  
         javatype="country"
         select="selectcountry"
         column="countryid" /> 
</resultmap> 
  <select id="selectbyid2" resultmap="peoplemapper2"
  select pid,pname,countryid from people where pid = #{xxx} 
</select>

总结

以上所述是小编给大家介绍的mybatis 一对一、一对多和多对多查询,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!

原文链接:https://blog.csdn.net/weixin_38048680/article/details/80307466