myBatis-類型關聯
阿新 • • 發佈:2017-07-16
each property getc 學生 batis () pre rop result
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();
}
myBatis-類型關聯