1.一对多
collection
<resultMap id="deptsql" type="Dept">
<id column="deptNo" property="deptNo"></id>
<result column="deptName" property="deptName"/>
<collection property="emps" ofType="Emp" select="selectby" column="deptNo"></collection>
</resultMap>
<select id="selectby" resultType="Emp">
SELECT *FROM emp WHERE deptNo=#{deptNo}
</select>
<select id="getEmpsByDeptNoS" resultMap="deptsql">
SELECT deptNo,deptName
from dept
WHERE deptNo=#{deptNo}
</select>
测试类
@Test
public void testOneToManys(){
SqlSession session= myBatis.getSqlSession();
IStudentInfoDao dao = session.getMapper(IStudentInfoDao.class);
Dept dept = dao.getEmpsByDeptNoS(5);
System.out.println(dept.getDeptName());
for (Emp emp:dept.getEmps()) {
System.out.println(emp.getEmpName());
}
session.close();
}
2.多对一
<!--多对一-->
<resultMap id="empMapper" type="Emp">
<id column="empNo" property="empNo"></id>
<result column="empName" property="empName"></result>
<association property="dept" javaType="Dept">
<id column="deptNo" property="deptNo"></id>
<result column="deptName" property="deptName"></result>
</association>
</resultMap>
<select id="getEmpNo" resultMap="empMapper">
select dept.deptNo,deptName,empNo,empName
from dept,emp
where dept.deptNo=emp.deptNo
and empNo=#{empNo}
</select>
<!--多条件 多对一-->
<resultMap id="deptsqls" type="Emp">
<id column="empNo" property="empNo"></id>
<result column="empName" property="empName"></result>
<association property="dept" javaType="Dept" select="selectbys" column="deptNo"></association>
</resultMap>
<select id="selectbys" resultType="Dept">
SELECT *FROM dept WHERE deptNo=#{deptNo}
</select>
<select id="getEmpNos" resultMap="deptsqls">
SELECT deptNo,empNo,empName
from emp
WHERE empNo=#{empNo}
</select>
3.自链接
<!--自链接-->
<resultMap id="getCatery" type="Category">
<id column="cid" property="cid"></id>
<result column="cname" property="cname"></result>
<result column="pid" property="pid"></result>
<collection property="list" ofType="Category" select="getCate" column="cid"></collection>
</resultMap>
<select id="getCate" resultMap="getCatery">
SELECT *FROM category WHERE pid=#{pid}
</select>
4.多对多
<resultMap id="sts" type="Teacher">
<id column="tid" property="tid"></id>
<result column="tname" property="tname"></result>
<collection property="stus" ofType="Students">
<id column="sid" property="sid"></id>
<result column="sname" property="sname"></result>
</collection>
</resultMap>
<select id="getts" resultMap="sts">
SELECT students.sid,sname,teacher.tid,tname FROM
students,ts,teacher WHERE students.sid=ts.sid
AND teacher.tid=ts.tid
AND teacher.tid=#{tid}
</select>
测试类
//过呢根据老师编号查询对应学生
@Test
public void testtss(){
SqlSession session= myBatis.getSqlSession();
IStudentInfoDao dao = session.getMapper(IStudentInfoDao.class);
Teacher teacher=dao.getts(1);
System.out.println(teacher.getTname());
for (Students cate:teacher.getStus()
) {
System.out.println(cate.getSname());
}
session.close();
}