mybatis(7)多对多映射

来源:互联网 发布:sql case when 嵌套 编辑:程序博客网 时间:2024/05/23 17:32
同样的,mybatis.xml,c3p0-config.xml配置文件省略不展示。


sql语句

create table students(sid int(5) primary key,sname varchar(10));create table courses(cid int(5) primary key,cname varchar(10));create table middles(msid int(5),mcid int(5),primary key(msid,mcid));insert into students(sid,sname) values(1,'哈哈');insert into students(sid,sname) values(2,'呵呵');insert into courses(cid,cname) values(1,'java');insert into courses(cid,cname) values(2,'android');insert into middles(msid,mcid) values(1,1);insert into middles(msid,mcid) values(1,2);insert into middles(msid,mcid) values(2,1);insert into middles(msid,mcid) values(2,2);select * from students;select * from courses;select * from middles;
Course.java
/** * 课程(多方) * @author AdminTC */public class Course {private Integer id;private String name;private List<Student> studentList = new ArrayList<Student>();//关联属性public Course(){}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public List<Student> getStudentList() {return studentList;}public void setStudentList(List<Student> studentList) {this.studentList = studentList;}}
Student.java

/** * 学生(多方) * @author AdminTC */public class Student {private Integer id;private String name;private List<Course> courseList = new ArrayList<Course>();//关联属性public Student(){}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public List<Course> getCourseList() {return courseList;}public void setCourseList(List<Course> courseList) {this.courseList = courseList;}}

CourseMapper.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="courseNamespace"><resultMap type="cn.itcast.javaee.mybatis.many2many.Course" id="courseMap"><id property="id" column="cid"/><result property="name" column="cname"/></resultMap><!-- 查询哈哈选学了哪些课程 --><select id="findAllByName" parameterType="string" resultMap="courseMap">select c.cid,c.cnamefrom students s inner join middles mon s.sid = m.msidinner join courses con m.mcid = c.cidand s.sname = #{name}</select></mapper>

StudentMapper.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="studentNamespace"><resultMap type="cn.itcast.javaee.mybatis.many2many.Student" id="studentMap"><id property="id" column="sid"/><result property="name" column="sname"/></resultMap><select id="findAllByCourseName" parameterType="string" resultMap="studentMap">select s.snamefrom students s inner join middles mon s.sid = m.msid inner join courses con m.mcid = c.cidand c.cname = #{name}</select></mapper>
StudentCourseDao.java

/** * 持久层 * @author AdminTC */public class StudentCourseDao {/** * 查询哈哈选学了哪些课程 * @param name 表示学生的姓名 */public List<Course> findAllByName(String name) throws Exception{SqlSession sqlSession = null;try{sqlSession = MybatisUtil.getSqlSession();return sqlSession.selectList("courseNamespace.findAllByName",name);}catch(Exception e){e.printStackTrace();throw e;}finally{MybatisUtil.closeSqlSession();}}/** * 查询java课程有哪些学生选修 * @param name 表示学生的课程 */public List<Student> findAllByCourseName(String name) throws Exception{SqlSession sqlSession = null;try{sqlSession = MybatisUtil.getSqlSession();return sqlSession.selectList("studentNamespace.findAllByCourseName",name);}catch(Exception e){e.printStackTrace();throw e;}finally{MybatisUtil.closeSqlSession();}}public static void main(String[] args) throws Exception{StudentCourseDao dao = new StudentCourseDao();List<Course> courseList = dao.findAllByName("哈哈");System.out.print("哈哈选学了" + courseList.size()+"个课程,分别是:");for(Course c : courseList){System.out.print(c.getName()+" ");}System.out.println("\n-----------------------------------------------------");List<Student> studentList = dao.findAllByCourseName("android");System.out.println("选修了android课程的学生有"+studentList.size()+"个,分别是:");for(Student s : studentList){System.out.print(s.getName()+" ");}}}




原创粉丝点击