使用resultMap实现ibatis复合数据结构查询(1.多重属性查询;2.属性中含有列表查询)
以订单为例(订单详情包括了订单的基本信息,配送物流信息,商品信息),直接上代码:
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.属性中含有列表查询)的更多相关文章
- LINQ查询表达式(2) - 在 C# 中编写 LINQ 查询
在 C# 中编写 LINQ 查询 C# 中编写 LINQ 查询的三种方式: 使用查询语法. 使用方法语法. 组合使用查询语法和方法语法. // 查询语法 IEnumerable<int> ...
- Redis使用场景一,查询出的数据保存到Redis中,下次查询的时候直接从Redis中拿到数据。不用和数据库进行交互。
maven使用: <!--redis jar包--> <dependency> <groupId>redis.clients</groupId> < ...
- 简版会员私信表设计及sql 私信列表查询
先上下表结构和数据 DROP TABLE IF EXISTS `message`; CREATE TABLE `message` ( `id` int(11) NOT NULL AUTO_INCREM ...
- 商城02——dubbo框架整合_商品列表查询实现_分页
1. 课程计划 1.服务中间件dubbo 2.SSM框架整合. 3.测试使用dubbo 4.后台系统商品列表查询功能实现. 5.监控中心的搭建 2. 功能分析 2.1. 后台系统所用的技术 框 ...
- 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma
1 PersonTestMapper.xml中的内容如下: <?xmlversion="1.0"encoding="UTF-8"?> < ...
- Hive 中的复合数据结构简介以及一些函数的用法说明
参见下面这篇博客: Hive 中的复合数据结构简介以及一些函数的用法说明
- 《Entity Framework 6 Recipes》中文翻译系列 (19) -----第三章 查询之使用位操作和多属性连接(join)
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 3-16 过滤中使用位操作 问题 你想在查询的过滤条件中使用位操作. 解决方案 假 ...
- Mybatis中的in查询和foreach标签
Mybatis中的foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach元素的属性主要有 item,index,collection,open,separato ...
- MyBatis 中使用数据库查询别名进行映射
方法1 XXMapper.xml <mapper namespace="com.hfepc.dao.andon.AndonExceptionKanbanVOMapper" & ...
随机推荐
- RAP接口文档的安装
本机环境 系统:CentOS 6.7 64 位 MySQL 5.6 JDK 1.8 Tomcat 8 Redis 3.0.7 Rap 0.14.1 Rap 说明 官网:https://github.c ...
- BZOJ 2178 Simpson积分
思路: 我发现能用Simpson积分水的题 好像都是裸题诶233333 //By SiriusRen #include <bits/stdc++.h> using namespace s ...
- 【年终糖果计划】跟风领一波糖果 candy.one 领取教程
糖果领取网址(较为稳定):https://candy.one/i/1474564 用微信和QQ打开的朋友请复制到其他浏览器打开 糖果领取网址(较为稳定):https://candy.one/i/147 ...
- JS——轮播图简单版
1.小图标版本 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- C#——接口的意义以及与抽象类的区别
接口的意义是什么呢?接口与抽象类又有什么区别?什么情况选择用接口?什么情况选择用抽象类? 接口的意义: 1.实际开发中的约束作用,继承接口的类必须实现接口规定的方法,方便多人开发中的协同,避免随意性. ...
- ASP.net参数传递总结
同一页面.aspx与.aspx.cs之间参数传递 1. .aspx.cs接收.aspx的参数:由于.aspx和.aspx.cs为继承关系,所以.aspx.cs可以直接对.aspx中的ID进行值提取,具 ...
- C# null
var t0est = Convert.ToString(""+null);//结果"" var t1est = ("" + null).T ...
- vue编辑回显问题
真是疯了,vue怪毛病真多 就下面这玩意儿,多选组合框,新增的时候好用的不行不行的,到了编辑的时候,要回显数据,怪毛病一堆一堆的 首先,回显的时候要传一个数组,但是这个数组里的元素得是字符串类型的,如 ...
- R语言数据重塑
使用cbind()函数连接多个向量来创建数据帧.此外,使用rbind()函数合并两个数据帧 使用merge()函数合并两个数据帧.数据帧必须具有相同的列名称,在其上进行合并 melt()拆分数 ...
- jmeter解决中文乱码问题
问题: 当响应数据或响应页面没有设置编码时,jmeter会按照jmeter.properties文件中,sampleresult.default.encoding 设置的格式解析默认ISO-8859- ...