MyBatis3.0 添加了association和collection标签专门用于对多个相关实体类数据进行级联查询,但仍不支持多个相关实体类数据的级联保存和级联删除操作
一、创建student、teacher和stu_teach_rel三张张表
DROp TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`id` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`gender` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `student` VALUES ('1', '刘德华', '55', '0');
INSERT INTO `student` VALUES ('2', '张惠妹', '49', '1');
INSERT INTO `student` VALUES ('3', '谢霆锋', '35', '0');
INSERT INTO `student` VALUES ('4', '王菲', '47', '1');
INSERT INTO `student` VALUES ('5', '汪峰', '48', '0');
INSERT INTO `student` VALUES ('6', '章子怡', '36', '1');
DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher` (
`id` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`gender` varchar(255) DEFAULT NULL,
`subject` varchar(255) DEFAULT NULL,
`degree` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `teacher` VALUES ('1', '王晶', '0', 'CHINESE', '大专');
INSERT INTO `teacher` VALUES ('2', '冯小刚', '0', 'ENGLISH', '本科');
INSERT INTO `teacher` VALUES ('3', '吴京', '0', 'MATHEMATICS', '大专');
INSERT INTO `teacher` VALUES ('4', '王倦', '1', 'MATHEMATICS', '研究生');
DROP TABLE IF EXISTS `stu_teach_rel`;
CREATE TABLE `stu_teach_rel` (
`id` int(11) NOT NULL,
`stu_id` int(11) NOT NULL,
`teach_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `stu_teach_rel` VALUES ('1', '1', '1');
INSERT INTO `stu_teach_rel` VALUES ('2', '2', '1');
INSERT INTO `stu_teach_rel` VALUES ('3', '1', '2');
INSERT INTO `stu_teach_rel` VALUES ('4', '2', '2');
INSERT INTO `stu_teach_rel` VALUES ('5', '2', '3');
INSERT INTO `stu_teach_rel` VALUES ('6', '3', '1');
INSERT INTO `stu_teach_rel` VALUES ('7', '3', '2');
INSERT INTO `stu_teach_rel` VALUES ('8', '1', '3');
INSERT INTO `stu_teach_rel` VALUES ('9', '4', '1');
INSERT INTO `stu_teach_rel` VALUES ('10', '4', '2');
INSERT INTO `stu_teach_rel` VALUES ('11', '5', '3');
INSERT INTO `stu_teach_rel` VALUES ('12', '5', '4');
INSERT INTO `stu_teach_rel` VALUES ('13', '6', '1');
INSERT INTO `stu_teach_rel` VALUES ('14', '6', '3');
二、新建和表相关的实体类
package com.yihaomen.mybatis.model;
import com.yihaomen.mybatis.enums.Gender;
import java.util.List;
public class Student {
private String id;
private String name;
private int age;
private Gender gender;
private List teachers;
setters&getters
}
package com.yihaomen.mybatis.model;
import com.yihaomen.mybatis.enums.Gender;
import com.yihaomen.mybatis.enums.Subject;
import java.util.List;
public class Teacher {
private int id;
private String name;
private Gender gender;
private Subject subject;
private String degree;
private List students;
setters&getters
}
三、新建映射关系
package com.yihaomen.mybatis.dao;
import com.yihaomen.mybatis.model.Student;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface StudentMapper {
List selectStudents();
}
student.xml
四、在configuration.xml中配置相关mapper
五、测试
package com.yihaomen.service.student;
import com.yihaomen.mybatis.dao.StudentMapper;
import com.yihaomen.mybatis.model.Student;
import com.yihaomen.mybatis.model.Teacher;
import com.yihaomen.service.baseTest;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import java.util.List;
public class TestStudent extends baseTest {
public static void testStuTeachRela() {
SqlSessionFactory sqlSessionFactory = getSession();
SqlSession session = sqlSessionFactory.openSession();
StudentMapper mapper = session.getMapper(StudentMapper.class);
List list = mapper.selectStudents();
for(Student s : list) {
System.out.println("------------------");
System.out.println(s.getName() + "," + s.getAge() + "," + s.getGender());
for(Teacher t : s.getTeachers()) {
System.out.println(t.getName() + "," + t.getGender() + "," + t.getSubject());
}
}
}
public static void main(String[] args) {
testStuTeachRela();
}
}
以上这篇mybatis多对多关联实战教程(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持考高分网。



