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

来源:互联网 发布:钢筋店需要什么软件 编辑:程序博客网 时间:2024/06/07 17:31

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 0
原创粉丝点击