mybatis一对一 和 一对多 嵌套查询

Posted 稻穗随风

tags:

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

实际项目中的,接口对外VO  会出现 一对一 和 一对多的情况,举例:小区 下面有 楼栋  ,楼栋 下面有 房屋    ,   房屋里面又房间

小区Vo  : districtVo {

  id;

  name;

  List<buildVo> builds

}

 

楼栋Vo :buildVo{

  id;

  name;

  did;

  List<apartmentVo> apartments

}

房屋Vo :apartmentVo{

  id;

  name;

  List<RoomVo>

} ..........

对外接口中 有个接口查询所有得小区 列表

 推荐方法

<select id = "getList" resultMap = "resultList">

  select  id , name   

        fomr 

<select >

<resultMap id="resultList" type="****.districtVo">
<collection property="builds" column="{id=id}" select="getbuids"></collection> //此处collection 集合方式 column 必须对应getlist 查出列 ,mybatis 总动从sql 语句中拿出对应列匹配column 传递到下一个select 语句中此处的select语句也可以写在collection中
</resultMap>
<select id="getbuids" resultType="****.buildVo">          
    select
d.id as id,
d.name as name,
from t_build d
where d.did = #{id,jdbcType=VARCHAR}
</select>

一对多的一种写法

如果想嵌套三层 在 查出 distict list 中 的buid 里面能有 apartment的信息  在 getbuids 中 再定义一个resultMap 然后再嵌套一次。 mybatis  一对多情况还是比较好理解 ,了解清楚  <collection></collection> 中每个标签的意思

第二种映射关系 此处尽量返回自己vo ,返回map 类型 有些列数据为空的时候 map 返回直接没有该属性 

 

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

Mybatis的嵌套关联查询案例实战

MyBatis 一对多查询

Mybatis学习系列关联查询

Mybatis学习第19节 -- 嵌套查询一对多的配置

MyBatis一对多关联表查询是使用嵌套结果好还是嵌套查询好?

mybatis处理一对多的查询