• resultMap


    
    
    @Data 
    public class Student { 
        private int id; 
        private String name; 
        private Teacher teacher; 
    }
    
     @Data 
    public class Teacher {
         private int id; 
        private String name; 
    } 
    一:查询所有学生的信息以及对应的老师信息
    二:如何将老师的信息封装到Student类teacher属性中?
    三:
      一:使用association,按照查询嵌套处理    
    <association property="被查询的类(A)的属性",column="对应表的列",javaType="被查询的类(A)属性对应类(B)",select="查询对应的类(B)结果"/><?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="com.nbg.dao.StudentMapper">    <resultMap id="S_T" type="student"> <id column="id" property="id"/> <id column="name" property="name"/> <association column="tid" property="teacher" javaType="Teacher" select="getTeacher"/> </resultMap> <select id="getTeacher" resultType="Teacher"> select * from teacher where id = #{tid}; </select> <select id="getStudentList" resultMap="S_T">   select * from student </select> </mapper> 方式二: <resultMap id="S_T_2" type="student"> <id column="sid" property="id"/> <id column="sname" property="name"/> <association property="teacher" javaType="Teacher"> <result property="name" column="tname"/> </association> </resultMap> <select id="getStudentList2" resultMap="S_T_2"> select s.id sid,s.name sname,t.name tname from student s,teacher t where s.tid = t.id; </select>
    <!--
    查询结果如下:Teacher的id都为0?不是id = 1 || id = 2?
    Student(id=1, name=张三, teacher=Teacher(id=0, name=毛))
    Student(id=2, name=李四, teacher=Teacher(id=0, name=毛))
    Student(id=3, name=王五, teacher=Teacher(id=0, name=毛))
    Student(id=4, name=赵四, teacher=Teacher(id=0, name=周))
    -->
    @Data
    public class Student {
        private int id;
        private String name;
        private int tid;
    }
    
    @Data
    public class Teacher {
        private int id;
        private String name;
        private List<Student> students;
    }

       二:使用collection

        方式一:      

    <resultMap id="T_S" type="Teacher">
        <id column="tid" property="id"/>
        <id column="tname" property="name"/>
        <collection property="students" ofType="Student">
           <result column="sid" property="id"/>
            <result column="sname" property="name"/>
            <result column="stid" property="tid"/>
        </collection>
    </resultMap>
    <select id="getTeacher" resultMap="T_S">
       select t.id tid, t.name tname, s.tid stid, s.id sid , s.name sname from teacher t,student s
       where s.tid = t.id
       and t.id = #{id};
    </select>

        方式二:

    <select id="getTeacher2" resultMap="T_S_2">
      select * from teacher where id = #{id};
    </select>
    
    <resultMap id="T_S_2" type="Teacher">
        <id property="id" column="id"/>
        <id property="name" column="name"/>
        <collection property="students" javaType="ArrayList" ofType="Student" select="S_S" column="id"/>
    </resultMap>
    
    <select id="S_S" resultType="Student" parameterType="int">
        select * from student where tid = #{tid};
    </select>
  • 相关阅读:
    Python字符串
    ListCtrl控件
    leetcode1004
    leetcode1003
    leetcode1002
    leetcode153
    leetcode540
    leetcode435
    leetcode999
    leetcode997
  • 原文地址:https://www.cnblogs.com/NBG-SDL/p/14076861.html
Copyright © 2020-2023  润新知