ssm中mapper连表子查询语句+数组参数分组查询

 下面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就行

 

猜你喜欢

转载自blog.csdn.net/qq_38337245/article/details/85220759