mybatis传入list或多个List的实现
背景:批量删除对端文件,传入的是fileId,文件过多时,特别慢,经过查看之后发现时通过foreach遍历进行删除的,十万10kb文件删除巨慢
解决办法:可以直接把这些id传入sql中进行删除,sql的执行效率还是蛮高的
看代码:
model
public class FileModel {
private String id;
private String fileName;
.............
}
dao层
void deleteFileById(@Param("list") List<String> ids);
mapper
其中parameterType写为list
foreach 中的collection写为"list"
ids为传过来的List ids
此业务为通过id进行删除
<delete id="deleteFileById" parameterType="java.util.List">
delete from file f where f.id in
<foreach item="ids" collection="list" open="(" separator="," close=")">
#{ids}
</foreach>
</delete>
传入多个list也是如此操作,多加一个and条件对应另外一个list就行