Mybatis总结(4)---联合查询

来源:互联网 发布:linux一键安装web环境 编辑:程序博客网 时间:2024/05/02 12:48

推荐采用联表查询

  1. 定义实体类
package com.lin.domain;public class Teacher {    private int id;    private String name;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    @Override    public String toString() {        return "Teacher [id=" + id + ", name=" + name + "]";    }}package com.lin.domain;public class Student {    private int id;    private String name;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    @Override    public String toString() {        return "Student [id=" + id + ", name=" + name + "]";    }}package com.lin.domain;import java.util.List;public class Classes {    private int id;    private String name;    private Teacher teacher;    private List<Student> students;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Teacher getTeacher() {        return teacher;    }    public void setTeacher(Teacher teacher) {        this.teacher = teacher;    }    public List<Student> getStudents() {        return students;    }    public void setStudents(List<Student> students) {        this.students = students;    }    @Override    public String toString() {        return "Classes [id=" + id + ", name=" + name + ", teacher=" + teacher + ", students=" + students + "]";    }}

2.定义sql映射文件classMapper.xml

<?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.lin.mapper.classMapper">    <select id="getClass3" parameterType="int" resultMap="ClassResultMap3">        select * from class c, teacher t,student s where c.teacher_id=t.t_id and c.C_id=s.class_id and  c.c_id=#{id}    </select>    <resultMap type="com.lin.domain.Classes" id="ClassResultMap3">        <id property="id" column="c_id"/>        <result property="name" column="c_name"/>        <association property="teacher" column="teacher_id" javaType="com.lin.domain.Teacher">            <id property="id" column="t_id"/>            <result property="name" column="t_name"/>        </association>        <!-- ofType指定students集合中的对象类型 -->        <collection property="students" ofType="com.lin.domain.Student">            <id property="id" column="s_id"/>            <result property="name" column="s_name"/>        </collection>    </resultMap></mapper>

3.测试类

package com.lin.test;import com.lin.domain.Classes;import com.lin.util.MyBatisUtil;import org.apache.ibatis.session.SqlSession;import org.junit.Test;    public class Test1 {        @Test        public void testGetClass3(){            SqlSession sqlSession = MyBatisUtil.getSqlSession();            String statement = "com.lin.mapper.classMapper.getClass3";//映射sql的标识字符串            Classes clazz = sqlSession.selectOne(statement,1);//查询class表中id为1的记录            sqlSession.close();            System.out.println(clazz);        }}
0 0