淘宝订单拉取更新历史状态~需求

订单接口api

可自行查询官网文档,点击进入

在这里插入图片描述

需求

       通过接口中has_next 标识判断该时间断是否还有下一页数据,直到该值数据为false时,表面该时间范围内的订单数据获取完成.

在这里插入图片描述
       拉取完成后需要对数据库中订单状态进行更新或者新增订单信息到数据库中,我们可以通过trade_id子订单号唯一去查询数据库已经存在的订单返回,数据库返回的格式 Map<String,TaobaoOrder> key为trade_id,value为TaobaoOrder数据库表实体类对象,这样我们就可以通过Map的containsKey方法判断是否存在,如果不存在则需要进行新增,反之修改订单状态

代码示例图

在这里插入图片描述

问题

Mapper返回的数据结构是Map<String,TaobaoOrder>,返回的结果却是Map<String,HashMap>

按照上面的思路,查询数据库返回Map<String,TaobaoOrder>对象时,需要注意在Mapper接口上添加@MapKey注解值的需要填写正确.如果创建的xml返回值是resultType="java.util.Map"并没有声明resultMap,那么@MapKey的值必须时数据库的字段.

Mapper接口定义:

在这里插入图片描述

xml代码:

在这里插入图片描述

运行效果:

在这里插入图片描述

解决 Map<String,TaobaoOrder>

可以看出通过上面配置的拿到的返回值和我们预期的对象不一致.这个时候就需要在xml的方法上添加resultMap

在这里插入图片描述

TaobaoOrderResult:
       resultMap: 简单理解就是把数据库字段转成实体类对象的属性.
       property:是实体类属性
       column:是数据库的字段
举个例子:这里把数据库的trade_id值设置到实体类tradeId

<resultMap type="com.itmei.platformsyncasyn.domain.TaobaoOrder" id="TaobaoOrderResult">
     <result property="refundTag"    column="refund_tag"    />
     <result property="itemImg"    column="item_img"    />
     <result property="itemTitle"    column="item_title"    />
     <result property="itemNum"    column="item_num"    />
     <result property="itemPrice"    column="item_price"    />
     <result property="itemLink"    column="item_link"    />
     <result property="itemId"    column="item_id"    />
     <result property="tradeId"    column="trade_id"    />
     <result property="tradeParentId"    column="trade_parent_id"    />
 </resultMap>

然后修改Mapper接口中的@MapKey("trade_id")@MapKey("tradeId")

在这里插入图片描述

运行效果:

在这里插入图片描述
       可以看出返回结果已经从Map<String,HashMap>变成我们Map<String,TaobaoOrder>对应的数据结构了.这样我们就可以直接通过订单id获取到对应的TaobaoOrder对象,就不需要单独在用订单id去查询一遍库,判断状态是什么值时对订单做对应的处理了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hi梅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值