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