1 TeacherMapper.xml文件
2
3
4
5 <?xml version="1.0" encoding="UTF-8" ?>
6 <!DOCTYPE mapper
7 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
8 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
9 <!--核心配置文件-->
10 <mapper namespace="com.kuang.dao.TeacherMapper">
11 <select id="getTeacher" resultType="Teacher">
12 select *
13 from mybatis.teacher;
14 </select>
15
16 <!-- 按照结果嵌套查询-->
17 <select id="getTeacher2" resultMap="TeacherStudent">
18 select s.s_id,s.s_name,t.t_name,t.t_id
19 from teacher t,student s
20 where s.t_id=t.t_id and t.t_id=#{t_id}
21 </select>
22
23 <resultMap id="TeacherStudent" type="Teacher">
24 <result property="t_id" column="t_id"/>
25 <result property="t_name" column="t_name"/>
26 <!--复杂的属性我们要单独处理
27 对象:association
28 集合:collection
29
30 javaType=""指定属性类型
31 结合中的泛型信息,我们使用 ofTypeu获取
32 -->
33 <collection property="students" ofType="Student">
34 <result property="s_id" column="s_id"/>
35 <result property="s_name" column="s_name"/>
36 <result property="t_id" column="t_id"/>
37 </collection>
38 </resultMap>
39
40
41 <!-- ==========================================-->
42
43 <select id="getTeacher3" resultMap="TeacherStudent2">
44 select * from mybatis.teacher where t_id=#{t_id}
45 </select>
46
47 <resultMap id="TeacherStudent2" type="Teacher">
48 <collection property="students" javaType="ArrayList" ofType="Student" select="getStudentByTeacherId"
49 column="t_id"/>
50 </resultMap>
51
52 <select id="getStudentByTeacherId" resultType="Student">
53 select * from mybatis.student where t_id=#{t_id}
54 </select>
55
56 </mapper>
1 pojo实体类
2
3 package com.kuang.pojo;
4
5 import lombok.Data;
6
7 import java.util.List;
8
9 @Data
10 public class Teacher {
11 private int t_id;
12 private String t_name;
13 //一个老师拥有多个学生
14 private List<Student> students;
15 }
1 dao接口类
2
3 package com.kuang.dao;
4
5 import com.kuang.pojo.Teacher;
6 import org.apache.ibatis.annotations.Param;
7 import org.apache.ibatis.annotations.Select;
8
9 import java.util.List;
10
11 public interface TeacherMapper {
12 //获取老师
13 List<Teacher> getTeacher();
14
15 //获取指定老师下的所有学生以及老师信息
16 Teacher getTeacher2(@Param("t_id") int t_id);
17
18 //获取指定老师下的所有学生以及老师信息 子查询
19 Teacher getTeacher3(@Param("t_id") int t_id);
20
21 }
MybatisUtils 工具类
package com.kuang.utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
//工具类
//sqlSessionFactory -->sqlSession
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
//使用mybatis第一步,获取sqlSessionFactory对象
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//既然有了SqlSessionFactory,顾名思义,我们就可以从中获得SqlSeseion 的实例
//SqlSession 完全包含了面向数据库执行SQL命令所需的所有方法
public static SqlSession getSqlSession() {
//sqlSession sqlSession=new sqlSessionFactory.openSession();
//return sqlSession
return sqlSessionFactory.openSession(true);
// sqlSessionFactory.openSession();
}
}
MyTest 测试类
import com.kuang.dao.TeacherMapper;
import com.kuang.pojo.Teacher;
import com.kuang.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class MyTest {
@Test
public void test() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
List<Teacher> teacher = sqlSession.getMapper(TeacherMapper.class).getTeacher();
for (Teacher teacher1 : teacher) {
System.out.println(teacher1);
}
sqlSession.close();
}
@Test
public void getTeacher2() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
Teacher teacher = sqlSession.getMapper(TeacherMapper.class).getTeacher2(1);
System.out.println(teacher);
// Teacher(t_id=1, t_name=张老师, students=[Student(s_id=1, s_name=张三, t_id=1), Student(s_id=2, s_name=李四, t_id=1), Student(s_id=3, s_name=王五, t_id=1)])
sqlSession.close();
}
@Test
public void getTeacher3() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
Teacher teacher = sqlSession.getMapper(TeacherMapper.class).getTeacher3(1);
System.out.println(teacher);
// Teacher(t_id=1, t_name=张老师, students=[Student(s_id=1, s_name=张三, t_id=1), Student(s_id=2, s_name=李四, t_id=1), Student(s_id=3, s_name=王五, t_id=1)])
sqlSession.close();
}
}