ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

mybatis中的ResultMap关联映射

2020-05-19 22:02:50  阅读:215  来源: 互联网

标签:映射 t2 System ResultMap t1 println mybatis id out


ResultMap 关联映射

使用ResultMap来进行关联查询,是利用主键表和外键表的关系来处理的,它相比前面的少写了一条sql语句,效率相对较高;

通过表连接查询将所需要的数据一并查询出来,然后再通过ResultMap将结果集映射到对应的对象中;单个对象==>association,集合==>collection;

1)写sql 查询需要的数据

2)配置ResultMap

①查询学生和班级信息,并通过ResultMap映射到单个Student类中;

//查询学生和班级信息,并通过resultMap映射到单个Student类中
    Student2 selectWithClassMapping(Integer id);
    <resultMap id="commonResultMap" type="Student2">
        <id column="id" property="id"></id>
        <result property="studentName" column="name"></result>
        <result property="classid" column="classid"></result>
        <result property="version" column="version"></result>
    </resultMap>
    <resultMap id="studentClassMapping" type="Student2" extends="commonResultMap">
        <association property="hClass" javaType="HClass">
            <id column="classid" property="id"></id>
            <result column="classname" property="name"></result>
            <result column="city" property="city"></result>
        </association>
    </resultMap>
    <select id="selectWithClassMapping" resultMap="studentClassMapping">
        select t1.*,t2.name classname,t2.city from h_student t1,h_class t2
        where t1.classid=t2.id and t1.id=#{id}
    </select>

测试文件为:

 System.out.println("=============测试查询学生和班级信息,并通过resultMap映射到单个Student类中======================");
        Student2 student24 = mapper.selectWithClassMapping(2);
        System.out.println(student24);
        System.out.println(student24.gethClass());

②查询学生和学生详细信息,并通过ResultMap映射到单个StudentInfo类中;

//查询学生和学生详细信息,并通过resultMap映射到单个类中
    Student2 selectWithStudentInfoMapping(Integer id);
    <resultMap id="StudentInfoMapping" type="Student2">
        <id property="id" column="id"></id>
        <result property="studentName" column="name"></result>
        <result property="classid" column="classid"></result>
        <result property="version" column="version"></result>
        <association property="studentInFo" javaType="StudentInFo">
            <result property="age" column="age"></result>
            <result property="address" column="address"></result>
        </association>
    </resultMap>
    <select id="selectWithStudentInfoMapping" resultMap="StudentInfoMapping">
        select t1.*,t2.age,t2.address from h_student t1,h_student_info t2
        where t1.id=t2.id and t1.id=#{id}
    </select>

测试文件为:

System.out.println("==============测试学生和学生详细信息的映射=================");
        Student2 student2 = mapper.selectWithStudentInfoMapping(2);
        System.out.println(student2);
        System.out.println(student2.getStudentInFo());

③查询班级和学生信息,并通过ResultMap映射到Student类中;

 //通过结果resultMap映射,复杂结果集
    HClass selectWithStudentMapping(Integer id);
<!--    复杂结果集映射-->
    <resultMap id="classStudentMapping" type="HClass">
        <id column="id" property="id"></id>
        <result property="name" column="name"></result>
        <result property="city" column="city"></result>
        <collection property="student2s" ofType="Student2">
            <id column="studentid" property="id"></id>
            <result column="studentname" property="studentName"></result>
            <result column="id" property="classid"></result>
            <result column="version" property="version"></result>
        </collection>
    </resultMap>
    <select id="selectWithStudentMapping" resultMap="classStudentMapping">
        select t1.*,t2.id studentid,t2.name studentname,t2.version
        from h_class t1,h_student t2 where t1.id=t2.classid and t1.id=#{id}
    </select>

测试文件为:

 System.out.println("============测试resultMap==========");
        HClass hClass2 = mapper.selectWithStudentMapping(21);
        System.out.println(hClass2);
        System.out.println(hClass2.getStudent2s());

④通过班级查找老师,利用map映射;

//班级查找老师,通过map映射
    HClass seletcHClassWithTeacher(Integer id);
    <resultMap id="HClassWithTeacherMapping" type="HClass">
        <id column="id" property="id"></id>
        <result property="name" column="name"></result>
        <result property="city" column="city"></result>
        <collection property="teachers" ofType="Teacher">
            <id column="teacherids" property="id"></id>
            <result column="teachername" property="name"></result>
            <result column="age" property="age"></result>
        </collection>
    </resultMap>
    <select id="seletcHClassWithTeacher" resultMap="HClassWithTeacherMapping">
        select t1.*,t2.id teacherids,t2.name teachername,t2.age
        from h_class t1,h_teacher t2,h_class_teacher t3
        where t1.id=t3.classid and t2.id=t3.teacherid and t1.id=#{id}
    </select>

测试文件为:

System.out.println("========测试班级和老师之间的映射关系==============");
        HClass hClass3 = mapper.seletcHClassWithTeacher(21);
        System.out.println(hClass3);
        System.out.println(hClass3.getTeachers());

标签:映射,t2,System,ResultMap,t1,println,mybatis,id,out
来源: https://www.cnblogs.com/xie-qi/p/12919855.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有