一、数据表结构
二、代码实现
2.1一对多关联查询
①一对多关联查询测试
@Test
public void oneToMany(){
// 获取Sqlsession
SqlSession session = MybatisUtil.createSession();
// 通过反射获取对应的接口类
CourseDao mapper = session.getMapper(CourseDao.class);
// 调用接口中与映射文件同名的类
CourseDto courseDto = mapper.oneToMany1(1);
// 获取DTO类中的学生集合属性
List students = courseDto.getStudents();
for (Student student : students) {
System.out.println(student);
}
System.out.println("========================================");
System.out.println(courseDto);
}
②映射文件
select * from course c left join student s on c.course_id=s.course_id where c.course_id=#{courseId}
注意要将映射文件注册到mybatis-config.xml的配置文件中
③对应的接口中的方法
CourseDto oneToMany1(int courseId);
2.2一对多级联查询
①测试(其实就是改了一下调用的方法)
@Test
public void oneToMany(){
// 获取Sqlsession
SqlSession session = MybatisUtil.createSession();
// 通过反射获取对应的接口类
CourseDao mapper = session.getMapper(CourseDao.class);
// 调用接口中与映射文件同名的类 关联查询
// CourseDto courseDto = mapper.oneToMany1(1);
// 级联查询
CourseDto courseDto = mapper.oneToMany2(1);
// 获取DTO类中的学生集合属性
List students = courseDto.getStudents();
for (Student student : students) {
System.out.println(student);
}
System.out.println("========================================");
System.out.println(courseDto);
}
②映射文件
注意:这里的
是单标签
③接口中对应的方法
CourseDto oneToMany2(int courseId);
④下滑线转小驼峰
注意,配置文件中属性比如properties、settings的摆放有顺序。
2.2一对一关联/级联查询
①测试及需求
@Test
public void oneToOne(){
SqlSession session = MybatisUtil.createSession();
StudentDao mapper = session.getMapper(StudentDao.class);
// StudentDto studentDto = mapper.selectById(1);
StudentDto studentDto = mapper.selectById2(2);
System.out.println(studentDto);
}
②配置文件
select * from student s left join course c on s.course_id = c.course_id where student_id=#{studentId} select * from student where student_id=#{studentId}
③StudentDao.java
// 关联查询
StudentDto selectById(int id);
// 级联查询
StudentDto selectById2(int id);
注意这里依然需要将映射文件添加到mybatis-config.xml的配置文件中
三、一些配置文件
3.1mybatis配置文件
3.2jdbc.properties
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/mybatis-test username=root password=root



