下面sql语句是根据id分组查询的sql语句(语句在mysql数据库测试没问题放这里也没多大问题):
GROUP BY audio.mm_id(根据这组id查询出属于它的所有数据,取到该id下最新时间的图片,然后根据该id进行分组,就能取到各id中时间最新的图片了)
<!-- 获取该用户的歌单的封面-->
<select id="getMusicMenuImgBymid" resultType="map">
SELECT audio.au_imgUrl,musicmenu.mm_name FROM musicmenu INNER JOIN audio ON musicmenu.mm_id = audio.mm_id
WHERE audio.uploadTime IN (SELECT MAX(audio.uploadTime) FROM audio WHERE audio.uploadTime IN (SELECT audio.uploadTime FROM audio)
AND audio.mm_id IN <foreach collection="array" item="mm_id" open="(" separator="," close=")">#{mm_id}</foreach> GROUP BY audio.mm_id)
</select>
取到数组id,遍历查询:
mm_id别名要一致
<foreach collection="array" item="mm_id" open="(" separator="," close=")">#{mm_id}</foreach>
数组形式的参数传过来,返回值类型记得设置为:resultType="map",不然返回到控制器那里都是null。
DAO层:
List<MusicMenu> getMusicMenuImgBymid(@Param("array")Integer[] mm_id);// 获取最新音频封面
@Param("array")这个好像不用写也行,只要foreach中的collection为array就行