学生表:
教师表:
其关联关系可表示为:
在一对多查询时(一个老师对多个学生),可想到方法:
- 子查询关联查询
将所需的教室和学生类构建好后,将mybatis核心配置完成后(所需的类和核心配置文件在文章末尾)
Mapper.xml文件可进行查询:
select * from mybatis.student;
方式二:
注意:如果出现空则是老师id没有 查到,需要加上:
测试结果:
Student(id=1, name=小明, teacher=Teacher(id=0, name=秦老师)) Student(id=2, name=小红, teacher=Teacher(id=0, name=秦老师)) Student(id=3, name=小张, teacher=Teacher(id=0, name=秦老师)) Student(id=4, name=小李, teacher=Teacher(id=0, name=秦老师)) Student(id=5, name=小王, teacher=Teacher(id=0, name=秦老师)测试所需的资源
核心配置文件:
核心封装类:
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession();
}
}
Student类:
@Data
public class Student {
private int id;
private String name;
//学生需要关联一个老师
private Teacher teacher;
}
Teacher类:
@Data
public class Teacher {
private int id;
private String name;
}
TtudentMapper接口:
public interface TeacherMapper {
@Select("select * from mybatis.teacher where id = #{tid}")
Teacher getTeacher(@Param("tid") int id);
}
StudentMapper接口:
public interface StudentMapper {
public List getStudent();
public List getStudent2();
}
测试类:
public class Test {
@Test
public void testStudent(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
List studentList = mapper.getStudent();
for (Student student : studentList) {
System.out.println(student);
}
sqlSession.close();
}
@Test
public void testStudent2(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
List studentList = mapper.getStudent2();
for (Student student : studentList) {
System.out.println(student);
}
sqlSession.close();
}
}



