myBatis 多表查询
多表查询
mybatis-config.xml---2个表都要注册
    <!--每一个Mappper.XML都需要在MyBatis核心配置文件中注册-->
    <mappers>
        <mapper class="dao.StudentMapper"/>
        <mapper class="dao.TeacherMapper"/>
<!--<mapper class="dao.UserDao"/>-->
    </mappers>
<!--给类起别名-->
    <typeAliases>
    <typeAlias type="pojo.Student" alias="Student"/>
    <typeAlias type="pojo.Teacher" alias="Teacher"/>
      <!--<package name="pojo"/>-->
    </typeAliases>
方法一
由于继承可以获取父类的所有属性,可以把多表的其他属性放到继承类里面去,再用继承类来输出,就有类所有表的属性
主表

从表

直接在studentmapper.xml 填写正常的连表查询sql
注意:数据库不分大小写,大小写不同的相同属性的可能会只有1个得到数据库字段
可以在sql其中一个列后面添加别名
    <select id="getStudentInfo" resultType="entityEx.StudentEx">
        select
        student.id,
           student.name,
           student.teacherID teacher_id,
           teacher.id teacherId,
           teacher.name teacherName
        from
            student
            left join teacher on teacher.id = student.teacherID
    </select>
方法二在studentmapper.xml
<!--
思路:
1. 查出所有学生信息
2. 根据查询出来的学生的tid,寻找对应的老师   子查询
-->
    <select id="getALLTeacher" resultMap="StudentTeacher">
        select *
        from myBatis.student;
    </select>
    <resultMap id="StudentTeacher" type="Student">
        <result property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="teacher_id" column="teacherID"/>
        <association property="teacher" column="teacherID" javaType="Teacher" select="getTeacherid"/>
    </resultMap>
    <select id="getTeacherid" resultType="Teacher">
        select *
        from myBatis.teacher where id=#{id};
    </select>
======================================================================================================================================================
or

方法三在studentmapper.xml
    <!--按照结果欣套处理-->
    <select id="getStudent2" resultMap="StudentTeacher2">
        select s.id sid,s.name sname,t.name tname
        from student s,teacher t
        where s.tid = t.id;
    </select>
    
    <resultMap id="StudentTeacher2" type="Student">
    <result property="id" column="sid"/>
    <result property="name" column="sname"/>
    <association property="teacher" javaType="Teacher">
        <result property="name" column="tname"/>
    </association>
    </resultMap>
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号