Mybatis作为一个ORM框架,肯定是支持sql高级查询的。

下面的一个案例来为大家详细讲解mybatis中的高级查询。

案例说明:

此案例的业务关系是用户,订单,订单详情与商品之间的关系。

以订单为主,一个订单只能属于一个人,订单和人是一对一的关系。一个订单可以有多个订单详情,订单和订单详情是一对多的关系。一个订单中可以有多个商品,一个商品也可以属于多个订单,订单与商品是多对多的关系。

有如下需求:

解决方法:

1.先分析,一共有四个实体,所以肯定要建四张数据表和四个实体类。

一对一查询,两表联合,以订单表为主表,用户表为从表进行笛卡尔积。在xxxMapper.xml文件中进行sql语句编写,如下图

用resultMap来定义返回值类型,首先要自定义resultMap标签里的内容,如下图:

在Order实体类中定义一个User属性,生成自己的get/set方法,然后这样就可以返回一个order类型,order包含user,这样就可以同时查询两张表内容,返回到一个类。

测试代码如下:

同理,一对多,多对多编程思想一致。由于本人能力有限所以只能理解到这里了。勿怪!!!

mybatis中的高级查询的更多相关文章

  1. 【mybatis深度历险系列】mybatis中的高级映射一对一、一对多、多对多

    学习hibernate的时候,小编已经接触多各种映射,mybatis中映射有到底是如何运转的,今天这篇博文,小编主要来简单的介绍一下mybatis中的高级映射,包括一对一.一对多.多对多,希望多有需要 ...

  2. Mybatis中的in查询和foreach标签

    Mybatis中的foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach元素的属性主要有 item,index,collection,open,separato ...

  3. SSM-MyBatis-13:Mybatis中多条件查询

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 实体类 public class Book { private Integer bookID; private ...

  4. 【mybatis】mybatis中放置IN查询拼接sql过长,IN查询进行分批次查询的处理

    需要使用的切割list集合的工具类,链接:https://www.cnblogs.com/sxdcgaq8080/p/9376947.html 处理逻辑,原本的一个LIst,进行切割,循环进行myba ...

  5. Mybatis中使用级联查询,一对多的查询

    一.需求描述 自己在开发一个小程序的过程中,需要做的一个查询是稍微比较复杂的查询,根据用户信息去查询用户所对应的宠物信息. 一个用户可能对应多个宠物,所以在用户和宠物信息的对应关系就是一对多的关系. ...

  6. Mybatis中的模糊查询

    今天下午做的一个功能,要用到模糊查询,字段是description,刚开始我的写法用的是sql中的模糊查询语句, 但是这个有问题,只有将字段的全部值传入其中,才能查询,所以不是迷糊查询. 后来经过搜索 ...

  7. 03-oracle中的高级查询

    1.连接查询 1.1 使用连接谓词指定的连接 介绍: 在连接谓词表示形式中,连接条件由比较运算符在WHERE子句中给出,将这种表示形式称为连接谓词表示形式,连接谓词又称为连接条件. 语法: [< ...

  8. 使用MyBatis的resultMap高级查询时常用的方式总结

    以下内容已经通过楼主测试, 从pd设计数据库到测试完成, 之前楼主也没有过Mybatis 使用resultMap觉得有点乱,最近抽出时间总结了一下也算对MyBatis的resultMap进行一次系统的 ...

  9. java使用插件pagehelper在mybatis中实现分页查询

    摘要: com.github.pagehelper.PageHelper是一款好用的开源免费的Mybatis第三方物理分页插件 PageHelper是国内牛人的一个开源项目,有兴趣的可以去看源码,都有 ...

随机推荐

  1. 莫烦TensorFlow_05 add_layer

    import tensorflow as tf import numpy as np def add_layer(inputs, in_size, out_size, activation_funct ...

  2. JAVA并发-Condition

    简介 在没有Lock之前,我们使用synchronized来控制同步,配合Object的wait().notify()系列方法可以实现等待/通知模式.在Java SE5后,Java提供了Lock接口, ...

  3. webapi中获取HttpContext

    public OperationResultDto APILogin() { LoginModel model = new LoginModel(); HttpContextBase context ...

  4. 求数组前K个大的数

    我们举例,假若从10000万个数里选出前100个最大的数据. 首先我们先分析:既然要选出前100个最大的数据,我们就建立一个大小为100的堆(建堆时就按找最大堆的规则建立,即每一个根节点都大于它的子女 ...

  5. 题解 P2668 【斗地主】

    dfs+简易剪枝+简易a* 思路: dfs+简易剪枝+简易a(我也不知道算不算a): dfs参数记录层数 按消耗牌多少的贪心顺序搜索 有几种情况可以不用搜索(但我还是搜索了) 可以用a*估算出来 最后 ...

  6. [LeetCode] 367. Valid Perfect Square 检验完全平方数

    Given a positive integer num, write a function which returns True if num is a perfect square else Fa ...

  7. DVWA File Inclusion 通关教程

    File Inclusion 介绍File Inclusion,即文件包含(漏洞),是指当服务器开启allow_url_include选项时,就可以通过php的某些特性函数:include(),req ...

  8. C# HTTP系列6 HttpWebResponse.StatusCode 响应代码中文详解

    系列目录     [已更新最新开发文章,点击查看详细] 1xx - 信息提示 这些状态代码表示临时的响应.客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应 · 100 - Continue ...

  9. gulp的初阶使用方法(转)

    安装好gulp之后接下来就是使用了,此文主要介绍一些前端开发时常用的一些插件及其用法 http://www.imooc.com/article/tag/26/hot/12插件安装 安装本地服务器插件: ...

  10. RestTemplate使用教程

    原文地址:https://www.cnblogs.com/f-anything/p/10084215.html 一.概述 spring框架提供的RestTemplate类可用于在应用中调用rest服务 ...