• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
土上方方
博客园    首页    新随笔    联系   管理    订阅  订阅

myBatis-类型关联

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();
}

  

 

posted @ 2017-07-16 18:33  土上方方  阅读(238)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3