一对多关系的代码书写
(这里的例子是班级和学生的关系——一个班级对多个学生)
(这里放主要代码,整个项目的代码:请点击)
Student.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="dao.StudentDao">
<resultMap type="entity.Student" id="map1">
<id column="sid" property="sid"/>
<result column="sname" property="sname"/>
<association property="clazz" javaType="entity.Clazz">
<id column="cid" property="cid"/>
<result column="cname" property="cname"/>
</association>
</resultMap>
<select id="selectAllStudent" resultMap="map1">
select sid,sname,student.cid,cname
from student inner join clazz
on student.cid = clazz.cid
</select>
</mapper>
Clazz.xml↓(这里为了避免与关键字class重名将所有的班级写为clazz)
<?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="dao.ClazzDao">
<resultMap type="entity.Clazz" id="map1">
<id column="cid" property="cid"/>
<result column="cname" property="cname"/>
<collection property="list" ofType="entity.Student">
<result column="sname" property="sname"/>
</collection>
</resultMap>
<select id="selectAllClazz" resultMap="map1">
select clazz.cid,cname,sname
from clazz inner join student
on clazz.cid = student.cid
</select>
</mapper>
执行函数Main↓
package main;
import java.util.List;
import biz.ClazzBiz;
import biz.StudentBiz;
import entity.Clazz;
import entity.Student;
public class Main {
public static void main(String[] args) {
// 通过学生找班级
StudentBiz biz = new StudentBiz();
List<Student> list = biz.selectAllStudent();
for(Student stu : list) {
System.out.println("学生id:"+stu.getSid());
System.out.println("学生姓名:"+stu.getSname());
System.out.println("学生班级id::"+stu.getClazz().getCid());
System.out.println("学生班级:"+stu.getClazz().getCname());
System.out.println("****************");
}
// 通过班级找学生
ClazzBiz biz2 = new ClazzBiz();
List<Clazz> list2 = biz2.selectAllClazz();
for(Clazz cl : list2) {
System.out.println("班级id:"+cl.getCid());
System.out.println("班级名称:"+cl.getCname());
System.out.println("班级学生:");
for(Student stu : cl.getList()) {
System.out.println("学生姓名:"+stu.getSname());
}
System.out.println("******************");
}
}
}