mybatis返回结果封装为map的探索

现在有一张food_order表

select count(1),user_id from food_order  where
create_time >= '2019-03-18 15:01:53' and create_time<='2019-03-20 13:18:41' and order_status in (-2,1,2,3,4)
and user_id in (select DISTINCT(user_id) from food_order where  create_time >= '2019-03-18 15:01:53' and  create_time<= '2019-03-20 13:18:41' 
and order_status in (-2,1,2,3,4))
group by user_id;

查询出的结果是

在这里插入图片描述
如果有多条数据的话

mapper.xml

<sql id="countOrderUser_where_if">
		where
			1=1
		<if test="beginDate1 != null">
			 and create_time &gt;= #{beginDate1}
		</if>
	  	<if test="endDate1 != null">
			and create_time &lt;= #{endDate1}
		</if>
			and order_status in (-2,1,2,3,4)
	</sql>
	<select id="countOrderUserByCreateTime" resultType="java.util.HashMap">
		select user_id as 'key',count(1) as 'value' from food_order
		<include refid="countOrderUser_where_if"></include>
		and user_id in (select DISTINCT(user_id) from food_order  
		<include refid="countOrderUser_where_if"></include>)
		group by user_id;
	</select>

dao层

	List<HashMap<String,Object>> countOrderUserByCreateTime
	(@Param("beginDate1") Date beginDate1, @Param("endDate1")Date endDate1);

controller

Map<Long, Long> map = new HashMap<>();
List<HashMap<String, Object>> list=
foodOrderDao.countOrderUserByCreateTime(beginDate1,endDate1);
		if (list != null && !list.isEmpty()) {
			for (HashMap<String, Object> map1 : list) {
				Long key = null;
				Long value = null;
				for (Map.Entry<String, Object> entry : map1.entrySet()) {
					if ("key".equals(entry.getKey())) {
						key = (Long) entry.getValue();
					} else if ("value".equals(entry.getKey())) {
						value = (Long) entry.getValue();
					}
				}
				map.put(key, value);
			}
		}

不要自己写按照博主的来否则会报类转化异常 亲身经历 前方有坑

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值