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 返回直接没有该属性

原文地址:https://www.cnblogs.com/yuan-jianfeng/p/10711913.html

时间: 2024-10-12 13:55:01

mybatis一对一 和 一对多 嵌套查询的相关文章

mybatis 一对一,一对多,多对多关系映射查询操作

定义两个类(对应数据库内两张表) User ,Account,每个Account属于一个User User类 及其 对应的IUserDao package com.itheima.domain; import java.io.Serializable; import java.util.Date; import java.util.List; public class User implements Serializable { private Integer id; private Strin

Mybatis 一对一,一对多,多对一,多对多的理解

First (一对一) 首先我来说下一对一的理解,就是一个班主任只属于一个班级,一个班级也只能有一个班主任.好吧这就是对于一对一的理解 怎么来实现呢? 这里我介绍了两种方式: 一种是:使用嵌套结果映射来处理重复的联合结果的子集 另一种呢是:通过执行另外一个SQL映射语句来返回预期的复杂类型 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis

Mybatis一对一、一对多、多对多

1.什么是MyBatis? MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .2013年11月迁移到Github. iBATIS一词来源于"internet"和"abatis"的组合,是一个基于Java的持久层框架.iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO). MyB

Mybatis一对一,一对多,多对多代码

一对一 <!-- 关系映射 --> <!-- 1-1:自动映射 --> <select id="oneToOne" resultType="UserView"> select u.*,c.num from user u,card c where u.id=c.per_fk </select> <!-- 1-1:手动映射之级联查询 --> <resultMap type="card"

阶段3 1.Mybatis_12.Mybatis注解开发_7 Mybatis注解开发一对多的查询配置

一对多的配置,一个用户对应多个账户 需要在Accout里面增加根据用户的uid查询的方法 在user里面指定子一对多的查询配置 换行显示 测试 把这里注销掉.测试延迟加载,代码注释掉后,延迟加载就没有再执行.什么时候用才会去加载数据 测试只执行了 select * 原文地址:https://www.cnblogs.com/wangjunwei/p/11334815.html

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

一对多和多对多是一样的. 而多对多是指 A对于B来说是一对多的关系, 同时B对于A来说也是一对多的关系, 互为一对多,即为多对多. 比如说一个标签下面有多篇文章,一篇文章也可能有多个标签 Shop实体类设计 List<Product> productList; Product实体类设计 public class Product implements Serializable{ Integer id; String name; String desc; String imgAddr; Strin

Mybatis 一对一、一对多、多对一

灵感来源于:https://www.cnblogs.com/xdp-gacl/p/4264440.html 转发自:https://www.cnblogs.com/hq233/p/6752335.html 首先  数据库量表之间字段关系(没有主外键) studentmajor表的id字段对应student表里major字段 两个实体类 package com.model; import java.util.Date; public class Student { private Integer

Mybatis一对一和一对多配置

问题描述 现在有三张数据表,表名为orders,orderdetail,items,分别表示订单,订单详情,商品. 其中一个订单包含多个订单详情,表示订单中的不同个具体的商品,订单详情唯一对应一件商品.所以orderdetail中的外键order_id为orders的主键,orderdetail中的外键items_id为items的主键. 数据库结构 DROP TABLE IF EXISTS `items`; /*!40101 SET @saved_cs_client = @@character

mybatis中的一对多的查询

一对多分为单条sq语句l和多条sql语句 下面就以员工和就职部门为例: 部门实体类 private Integer deptno;private String deptname;//植入员工实体集合private List<Emp> emps=new ArrayList<Emp>(); public String getDeptname() { return deptname;}public void setDeptname(String deptname) { this.dept