Mybatis 一对一 多对一

Posted superficial。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis 一对一 多对一相关的知识,希望对你有一定的参考价值。

 <!-- <resultMap type="employee" id="emplist">
       <id property="ids" column="IDS"/>
       <result property="ename" column="ENAME"/>
       <result property="esex" column="ESEX"/>
       <result property="birthday" column="BIRTHDAY"/>
       <result property="address" column="ADDRESS"/>
       <result property="dept.id" column="ID"/>
       <result property="dept.dname" column="DNAME"/>
       <result property="dept.createtime" column="CREATETIME"/>
     </resultMap> -->

  这个是级联查询  一次性把两个表的内容都累出来

<!--<resultMap type="employee" id="emplist">
       <id property="ids" column="IDS"/>
       <result property="ename" column="ENAME"/>
       <result property="esex" column="ESEX"/>
       <result property="birthday" column="BIRTHDAY"/>
       <result property="address" column="ADDRESS"/>
       <association property="dept" resultMap="deptlist"></association>   
     </resultMap>
     <resultMap type="dept" id="deptlist">
        <result property="id" column="ID"/>
       <result property="dname" column="DNAME"/>
       <result property="createtime" column="CREATETIME"/>
     </resultMap> -->

  

 <!--  <resultMap type="employee" id="emplists">
       <association property="dept" column="deptid" select="mapper.DeptMapper.selectDept"></association>
     </resultMap>
     <select id="selectAllEmployee" resultMap="emplists" >
         SELECT * FROM EMPLOYEE E JOIN DEPT D ON E.DEPTID=D.ID 
     </select> -->



  <resultMap type="employee" id="myemp">
        <id column="ids" property="ids"/>
        <result column="ename" property="ename" />
        <result column="esex" property="esex" />
        <result column="birthday" property="birthday"/>
        <result column="address" property="address"/>
        <association property="dept" column="deptid" select="mapper.DeptMapper.selectDept"></association>
     </resultMap>
     
     <select id="selectEmployee" resultMap="myemp">
       select * from employee e where e.ids=#{id}
     </select>

  这两个都是分布查询   多对一也是这样的  只是association 换成collection

 <resultMap type="dept" id="mydept">
       <id property="id" column="id"/>
       <result property="dname" column="dname"/>
       <result property="createtime" column="createtime"/>
       <collection property="list" column="id" select="mapper.EmployeeMapper.selectOneEmployee"></collection>
    </resultMap>
    <select id="selectOneDept" parameterType="Integer"  resultMap="mydept">
        select * from dept d where d.id=#{id}
    </select>

  多对一查询

 

联合查询一般用分布查询  resultmap标签中 type类型就是想要查询的类型  id随便写 是resultmap的唯一标识,collection标签中 property 属性指定的是联合查询的是哪个 column传入的指定的值 工select查询

 

resultmap 是制定封装规则  所以定义哪个对象的封装规则 那么 这个标签的type属性就写哪个

以上是关于Mybatis 一对一 多对一的主要内容,如果未能解决你的问题,请参考以下文章

mybatis映射 一对一,一对多,多对多高级映射

MyBatis一对多,多对一,多对多

Mybatis复杂查询动态sql及缓存详解

mybatis 一对一 一对多 多对多

Mybatis多表查询(一对多,多对一,多对多)

Mybatis: 一对多,多对一