Mybatis中<select id="getImages" resultType="java.util.Map">查出的结果顺序

1、问题出现场景:

昨天的工作中有一个业务需求是根据数据id查询该条数据包含的图片路径数据:

初始mapper中相关select如下:

<select id="getImages" parameterType="java.util.Map" resultType="java.util.Map">

 

  select <include refid="images"/> from loss_recc where id = #{id}

 

  </select>

<sql id="images">

  img01,img02,img03,img04,img05,img06,img07,img08,img09,img10
  </sql>

例如有一条数据是img01,img02,img03,img04有值,其余的image都没有值。查询结果用HashMap<String, String> map来接,断点发现map中元素顺序为{img05=, img06=, img07=, img08=, img09=, img10=,img03=/20170614/3.jpg,img02=/20170614/2.jpg,  img01=/20170614/1.JPG,  img04=/20170614/4.jpg,}类似于这样的无序数据(跟select 后的查询项数据不一致)。

后将mapper中的resultType做了如下修改,得到了预期结果

<select id="getImages" parameterType="java.util.Map" resultType="java.util.LinkedHashMap">

原因可能是因为Map元素放置无顺序,LinkedHashMap是HashMap的一个子类,它保留插入的顺序,如果需要输出的顺序和输入时的相同,那么就选用LinkedHashMap。

2、再学习LinkedHashMap

参考:http://uule.iteye.com/blog/1522291

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值