您的位置:首页 > 其它

Mybatis框架-22:多表操作之多对多——添加操作

2019-06-09 11:55 357 查看

第一步:mapper接口

教师的mapper接口,这里有两个接口,一个是用于插入教师,一个是用于更新关系维护外键

[code]/**
* 添加教师
* @param teacher
*/
void insertTeacher(Teacher teacher);

/**
* 添加老师的学生时候维护外键的关系
* @param studentId
* @param teacherId
*/
void insertRelationWithStudent(@Param("studentId") Integer studentId, @Param("teacherId") Integer teacherId);

学生的mapper接口

[code]/**
* 添加学生
* @param student
*/
void insertStudent(Student student);

第二步:mapper.xml的SQL语句 

注意:这里插入之后都需要获取主键

教师的sql:这里有两个sql,一个插入教师,一个更新关系

[code]<insert id="insertTeacher" parameterType="Teacher"
useGeneratedKeys="true"
keyProperty="teacherId"
keyColumn="teacherId">
insert into `teacher` (teacherName) values (#{teacherName});
</insert>

<insert id="insertRelationWithStudent">
insert into `teacher_student` (studentId,teacherId) values (#{studentId},#{teacherId});
</insert>

学生的sql

[code]<insert id="insertStudent"
parameterType="Student"
useGeneratedKeys="true"
keyProperty="studentId"
keyColumn="studentId">
insert into `student` (studentName) values (#{studentName});
</insert>

第三步:测试类

[code]@Test
public void test3(){
SqlSession session = MyUtils.openSession();
TeacherMapper teacherMapper = session.getMapper(TeacherMapper.class);
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
//创建老师
Teacher teacher = new Teacher();
teacher.setTeacherName("新老师1");
//创建学生
Student student1 = new Student();
student1.setStudentName("新学生1");
Student student2 = new Student();
student2.setStudentName("新学生2");
//老师添加学生
teacher.getStudents().add(student1);
teacher.getStudents().add(student2);
//插入老师和学生
teacherMapper.insertTeacher(teacher);
studentMapper.insertStudent(student1);
studentMapper.insertStudent(student2);

//维护关系
for (Student student : teacher.getStudents()) {
teacherMapper.insertRelationWithStudent(student.getStudentId(),teacher.getTeacherId());
}

session.commit();
session.close();
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: