学科
package cn.itcast.javaee.mybatis.one2many; import java.util.ArrayList; import java.util.List; /** * 学科(单方) * @author AdminTC */ public class Grade { private Integer id; private String name; private List<Student> studentList = new ArrayList<Student>();//关联属性 public Grade(){} 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; } }
学生
package cn.itcast.javaee.mybatis.one2many; /** * 学生(多方) * @author AdminTC */ public class Student { private Integer id; private String name; private Grade grade;//关联属性 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 Grade getGrade() { return grade; } public void setGrade(Grade grade) { this.grade = grade; } }
GradeMapper.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="gradeNamespace">
<resultMap type="cn.itcast.javaee.mybatis.one2many.Grade" id="gradeMap">
<id property="id" column="gid"/>
<result property="name" column="gname"/>
<collection property="studentList" resultMap="studentNamespace.studentMap"/>
</resultMap>
<!-- 查询哈哈是哪个学科的 -->
<select id="findGradeByName" parameterType="string" resultMap="gradeMap">
select g.gid,g.gname,s.sid,s.sname
from grades g,students s
where g.gid = s.sgid
and 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.one2many.Student" id="studentMap">
<id property="id" column="sid" />
<result property="name" column="sname"/>
<association property="grade" resultMap="gradeNamespace.gradeMap"/>
</resultMap>
<!-- 查询java学科有哪些学生信息 -->
<select id="findAllByName" parameterType="string" resultMap="studentMap">
select s.sid,s.sname,g.gid,g.gname
from grades g,students s
where g.gid = s.sgid
and g.gname = #{name}
</select>
</mapper>
GradeStudentDao
package cn.itcast.javaee.mybatis.one2many; import java.util.List; import org.apache.ibatis.session.SqlSession; import cn.itcast.javaee.mybatis.util.MybatisUtil; /** * 持久层 * @author AdminTC */ public class GradeStudentDao { /** * 查询java学科有哪些学生信息 * @param name 表示学科名 */ public List<Student> findAllByName(String name) throws Exception{ SqlSession sqlSession = null; try{ sqlSession = MybatisUtil.getSqlSession(); return sqlSession.selectList("studentNamespace.findAllByName",name); }catch(Exception e){ e.printStackTrace(); throw e; }finally{ MybatisUtil.closeSqlSession(); } } /** * 查询哈哈是哪个学科的 * @param name 表示学生姓名 */ public Grade findByName(String name) throws Exception{ SqlSession sqlSession = null; try{ sqlSession = MybatisUtil.getSqlSession(); return sqlSession.selectOne("gradeNamespace.findByName",name); }catch(Exception e){ e.printStackTrace(); throw e; }finally{ MybatisUtil.closeSqlSession(); } } public static void main(String[] args) throws Exception{ GradeStudentDao dao = new GradeStudentDao(); List<Student> studentList = dao.findAllByName("java"); System.out.println("java学科有"+studentList.size()+"个学生,它们信息如下:"); for(Student s : studentList){ System.out.println(s.getId()+":"+s.getName()); } System.out.println("-----------------------------------------------------------"); Grade grade = dao.findByName("哈哈"); System.out.println("哈哈是"+grade.getName()+"学科的"); System.out.println("-----------------------------------------------------------"); grade = dao.findByName("呵呵"); System.out.println("呵呵是"+grade.getName()+"学科的"); } }