zoukankan      html  css  js  c++  java
  • 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();
    }

      

  • 相关阅读:
    消息中间件(MQ)
    java Lambda表达式
    【测试】性能测试及性能测试工具JMeter
    【Mysql】mysql集群方案之读写分离
    linux下mysql开启远程访问权限及防火墙开放3306端口
    MySQL事务提交与回滚
    MySQL索引
    MySQL视图
    MySQL事务
    MySQL参数化有效防止SQL注入
  • 原文地址:https://www.cnblogs.com/wangbenqing/p/7191327.html
Copyright © 2011-2022 走看看