1.2.4 编写对应的 Mapper 接口
package sharm.dao;
import sharm.pojo.Student;
import java.util.List;
public interface StudentsMapper {
List selectStudents();
}
1.2.5 编写对应的 Mapper.xml 文件
为了便于阅读,我们在 main 文件夹中存放接口,在 resource 文件夹中存放 xml 文件,在编译后,会发现两者是在同一个文件下的。
代码内容见本章 9.2.7 小节。
1.2.6 在 MyBatis 配置文件中绑定对应的 Mapper 接口
1.2.7 利用 ResultMap 实现需求
1)按照结果进行嵌套处理
<?xml version="1.0" encoding="UTF-8" ?>select s.id sid, s.name sname , t.name tname
from student s,teacher t
where s.tid = t.id
2)按照查询进行嵌套处理
<?xml version="1.0" encoding="UTF-8" ?>select * from mybatis.student
select * from mybatis.teacher where id = #{tid}
1.2.8 编写测试类测试
@Test
public void testSelectStudents(){
SqlSession sqlSession = MyBatisUtils.getSession();
StudentsMapper mapper = sqlSession.getMapper(StudentsMapper.class);
List students = mapper.selectStudents();
for (Student student: students) {
System.out.println(student);
}
sqlSession.close();
}
1.3.1 需求
有两张表,其中一张是学生表,另一张是老师表,其中一个老师对应多个学生,现在想查询一个老师及对应所有学生的信息。
1.3.2 SQL 语句
此时,如果想得到需求的结果,是可以直接用 SQL 语句得到的,如:
select s.id sid, s.name sname , t.name tname, t.id tid
from student s,teacher t
where s.tid = t.id and t.id= 1;
但该怎么使用 MyBatis 得到如上结果呢?继续看下去吧。
1.3.3 建立实体类
1)Teacher 实体类
public class Teacher {
private int id;
private String name;
private List Students;
}
2)Student 实体类
public class Student {
private int id;
private String name;
// 对应老师的 ID 号
private int tid;
}
1.3.4 编写对应的 Mapper 接口
package sharm.dao;
import sharm.pojo.Teacher;
public interface TeacherMapper {
public Teacher selectTeacher(int id);
}
1.3.5 编写对应的 Mapper.xml 文件
为了便于阅读,我们在 main 文件夹中存放接口,在 resource 文件夹中存放 xml 文件,在编译后,会发现两者是在同一个文件下的。
代码内容见本章 9.3.7 小节。
1.3.6 在 MyBatis 配置文件中绑定对应的 Mapper 接口
1.3.7 利用 ResultMap 实现需求
1)按照结果进行嵌套处理
<?xml version="1.0" encoding="UTF-8" ?>select s.id sid, s.name sname , t.name tname, t.id tid
from student s,teacher t
where s.tid = t.id and t.id=#{id}
2)按照查询进行嵌套处理
<?xml version="1.0" encoding="UTF-8" ?>select * from teacher where id = #{id}
select * from student where tid = #{id}