以订单为例(订单详情包括了订单的基本信息,配送物流信息,商品信息),直接上代码:

1.多重属性查询

java实体

public class OrderDetail {

    @XmlElement(required = true)
protected String orderSn;
@XmlElement(required = true)
protected String orderAmount;
@XmlElement(required = true)
protected String orderStatus;
@XmlElement(required = true)
protected String orderAddTime;
@XmlElement(required = true)
protected Logistics logistics;
@XmlElement(required = true)
protected OrderGoods orderGoods;
@XmlElement(required = true)
protected List<OrderDetail> listData;
<pre name="code" class="java"> ... getter and setter...
}

class="orderDetail" 即为上面的类,有个属性logistics的类型是复合类型Logistics

以下是订单详情的resultMap:

		<resultMap id="OrderInfoMap" class="orderDetail">
<result property="orderSn" column="orderSn"/>
<result property="orderAmount" column="orderAmount"/>
<result property="orderStatus" column="orderStatus"/>
<result property="orderStatus" column="orderAddTime"/> <result property="logistics.consignee" column="consignee"/>
<!-- <result property="logistics.receiver" column="receiver"/> -->
<result property="logistics.country" column="country"/>
<result property="logistics.province" column="province"/>
<result property="logistics.city" column="city"/>
<result property="logistics.district" column="district"/>
<result property="logistics.address" column="address"/>
<result property="logistics.mobile" column="mobile"/>
<result property="logistics.shippingName" column="shippingName"/> <result property="orderGoods.listData" select="wxShopOrder.getOrderGoodsList"
column="orderSn"/>
</resultMap>

当中"<result property="logistics.consignee" column="consignee"/> ",logistics.consignee就能够用对象訪问的写法来查询,consignee是logistics的属性,logistics是orderDetail的属性.注意:column的名称应该与sql语句查询的列名一致.

sql查询语句例如以下:

   <select id="getOrderDetail" parameterClass="string" resultMap="OrderInfoMap" >
select
order_sn as orderSn,
order_amount as orderAmount,
order_status as orderStatus,
add_time as orderAddTime,
consignee,
country, b.region_name province,
c.region_name city,
d.region_name district,
address,
mobile,
shipping_name as shippingName from ecs_order_info o
left join ecs_region b on o.province=b.region_id
left join ecs_region c on o.city=c.region_id
left join ecs_region d on o.district=d.region_id
where order_sn=#orderSn#
</select>

2.属性中含有列表查询

orderDetail有个属性orderGoods的类型是List复合类型,应在resultMap的属性定义中加入属性select="getOrderGoodsList",getOrderGoodsList也是一个sql查询

<result property="orderGoods.listData" select="wxShopOrder.getOrderGoodsList" column="orderSn"/>

注意:上面column="orderSn"指的是orderSn作为sql的查询參数. 看下这个  getOrderGoodsList查询

 <!-- 通过订单号获取订单商品列表 -->
<select id="getOrderGoodsList" parameterClass="string" resultMap="orderGoodsMap">
select goods_name as goodsName,
goods_number as goodsNumber
from ecs_order_goods where order_id=
(select order_id from ecs_order_info where order_sn=#orderSn#)
</select>

使用resultMap实现ibatis复合数据结构查询(1.多重属性查询;2.属性中含有列表查询)的更多相关文章

  1. LINQ查询表达式(2) - 在 C# 中编写 LINQ 查询

    在 C# 中编写 LINQ 查询 C# 中编写 LINQ 查询的三种方式: 使用查询语法. 使用方法语法. 组合使用查询语法和方法语法. // 查询语法 IEnumerable<int> ...

  2. Redis使用场景一,查询出的数据保存到Redis中,下次查询的时候直接从Redis中拿到数据。不用和数据库进行交互。

    maven使用: <!--redis jar包--> <dependency> <groupId>redis.clients</groupId> < ...

  3. 简版会员私信表设计及sql 私信列表查询

    先上下表结构和数据 DROP TABLE IF EXISTS `message`; CREATE TABLE `message` ( `id` int(11) NOT NULL AUTO_INCREM ...

  4. 商城02——dubbo框架整合_商品列表查询实现_分页

    1.   课程计划 1.服务中间件dubbo 2.SSM框架整合. 3.测试使用dubbo 4.后台系统商品列表查询功能实现. 5.监控中心的搭建 2.   功能分析 2.1. 后台系统所用的技术 框 ...

  5. 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma

     1 PersonTestMapper.xml中的内容如下: <?xmlversion="1.0"encoding="UTF-8"?> < ...

  6. Hive 中的复合数据结构简介以及一些函数的用法说明

    参见下面这篇博客: Hive 中的复合数据结构简介以及一些函数的用法说明

  7. 《Entity Framework 6 Recipes》中文翻译系列 (19) -----第三章 查询之使用位操作和多属性连接(join)

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 3-16  过滤中使用位操作 问题 你想在查询的过滤条件中使用位操作. 解决方案 假 ...

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

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

  9. MyBatis 中使用数据库查询别名进行映射

    方法1 XXMapper.xml <mapper namespace="com.hfepc.dao.andon.AndonExceptionKanbanVOMapper" & ...

随机推荐

  1. Elasticsearch之CURL命令的version控制

    普通关系型数据库使用的是(悲观并发控制(PCC)) 当我们在修改一个数据前先锁定这一行,然后确保只有读取到数据的这个线程可以修改这一行数据 ES使用的是(乐观并发控制(OCC)) ES不会阻止某一数据 ...

  2. ios数据的基本类型和流程控制

    swift的声明变量方式和js是类似的.基本类型基本都和java的差不多,多了字符类型. let:用于声明常量: var:用于声明变量: 基本类型有:double,float,Int(数字类型):bo ...

  3. android计算屏幕dp

    首先我们来了解一些基本元素: px:像素,屏幕上的点. dpi:一英寸长的直线上的像素点的数量,即像素密度.标准值是160dp. /*** 正是因为dpi值其代表的特性,所以android项目的资源文 ...

  4. JS——鼠标跟随

    注意事项: 1.pageX.pageY的兼容问题 2.使目标移动鼠标中间位置还必须减去盒子宽度的一半 <!DOCTYPE html> <html lang="en" ...

  5. 4th 循环结构概述和for语句的格式及其使用

    04.01_Java语言基础(循环结构概述和for语句的格式及其使用) A:循环结构的分类 for,while,do...while B:循环结构for语句的格式: for(初始化表达式;条件表达式; ...

  6. 【译】x86程序员手册08 -2.6中断和异常

    2.6 Interrupts and Exceptions 中断和异常 The 80386 has two mechanisms for interrupting program execution: ...

  7. 比较简单的替换配置文件的shell脚本

    作为测试,日常更新部署测试版本,修改配置文件是每天必不可少的一个工作.特别是如果需要更改的配置文件存在于多个文件里,更是繁琐不堪. 找了一下Linux shell脚本里有个sed 命令可以实现这个需求 ...

  8. Windows Phone 8: NavigationInTransition实现页面切换效果

    NavigationInTransition这个是实现页面切换效果,而且没控件来拖,要自己手动写, 将App.xaml.cs中InitializePhoneApplication()函数里的RootF ...

  9. UIResponder详解

    UIResponder Class Reference Managing the Responder Chain 1.- (UIResponder *)nextResponder 返回接收者的下一个相 ...

  10. python开发 面试题

    一.简述列表与元组的区别 答: 元组tuple与列表List相同点 元组tuple与列表List都是序列类型的容器对象,可以存放任何类型的数据.支持切片.迭代等操作. 元组tuple与列表List区别 ...