从学生角度(多对一):多个学生关联一个老师(关联)
从老师角度(一对多):一个老师有多个学生(集合)
1.创建teacher表和student表,并插入数据
CREATE TABLE `teacher` (
`id` int(10) NOT NULL,
`name` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
INSERT INTO `mybatis`.`teacher` (`id`, `name`) VALUES ('1', '赵老师');
CREATE TABLE `student` ( `id` int(10) NOT NULL, `name` varchar(30) DEFAULT NULL, `tid` int(10) DEFAULT NULL, PRIMARY KEY (`id`), KEY `tid` (`tid`), CONSTRAINT `student_ibfk_1` FOREIGN KEY (`tid`) REFERENCES `teacher` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
INSERT INTO `mybatis`.`student` (`id`, `name`, `tid`) VALUES ('1', '鲁班', '1'); |
INSERT INTO `mybatis`.`student` (`id`, `name`, `tid`) VALUES ('2', '李白', '1');
INSERT INTO `mybatis`.`student` (`id`, `name`, `tid`) VALUES ('3', '蔡文姬', '1');
INSERT INTO `mybatis`.`student` (`id`, `name`, `tid`) VALUES ('4', '孙尚香', '1');
INSERT INTO `mybatis`.`student` (`id`, `name`, `tid`) VALUES ('5', '妲己', '1');
2.创建子模块mybatis06
2.1 拷贝mybatis05的com.my包下的代码及resources配置文件
2.2 删去UserMapper以及User实体类
2.3 com.my.pojo创建Student实体类以及Teacher实体类
@Data
Public class Student{
Private int id;
Private String name;
//学生需要关联一个老师
Private Teacher teacher;
}
@Data
Public class Teacher{
Private int id;
Private String name;
}
2.4 com.my.dao创建StudentMapper接口以及TeacherMapper接口
Public interface StudentMapper{
}
Public interface TeacherMapper{
@Select("select * from teacher where id=#{tid}")
Teacher getTeacher(@Param("tid")int id);
}
2.5 resources下创建com.my.dao文件夹,在文件夹下创建StudentMapper.xml以及TeacherMapper.xml
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC"-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.my.dao.StudentMapper">
</mapper>
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC"-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.my.dao.TeacherMapper">
</mapper>
2.6 在核心配置文件mybatis-config.xml绑定Mapper接口
<mappers>
<mapperclass="com.my.dao.TeacherMapper"/>
<mapperclass="com.my.dao.StudentMapper"/>
</mappers>
2.7 test下创建MyTest测试类
Public class MyTest{
Public static void main(String[] args){
SqlSession sqlSession=MybatisUtils.getSqlSession();
TeacherMapper teacherMapper=sqlSession.getMapper(TeacherMapper.class);
Teacher teacher=teacherMapper.getTeacher(1);
sqlSession.close();
}
}
2.8 运行结果