最近需要做个功能,批量修改报警过滤
1.pojo
public class AlarmFilterCustom extends AlarmFilter {
private String wtitle; // 默认的标题
private String lang; // 语言
private String orderby; // 排序字段
private String likename; // 模糊检索类
private List<AlarmFilterCustom> filter; // 更新的数组,做mysql批量操作的参数
private Integer grpid;
private String text;
省略set,get方法}
2.AlarmFilterCustom param = new AlarmFilterCustom();
for(int i = 0; i < alarmFilterCustoms.size(); i++){
alarmFilterCustoms.get(i).setUid(userInfo.getGid());
}
param.setFilter(alarmFilterCustoms);
3. <!-- 新增数据 -->
<insert id="addAlarmRecord" parameterType="java.util.List" useGeneratedKeys="true"
keyProperty="id">
<foreach collection="filter" index="index" item="item" separator=";">
insert into t_alarmfilter (uid, aid, notice, web, app, mail) values
( #{item.uid}, #{item.aid}, #{item.notice}, #{item.web}, #{item.app}, #{item.mail})
ON DUPLICATE KEY UPDATE //判断是执行新增还是更新,如果数据库存在uid,aid相同的数据,则更新,否则新增
uid = #{item.uid}, aid = #{item.aid}, notice = #{item.notice}
</foreach>
</insert>
4.mysql,表配置
for (var i = 0; i < idlist.length; i++) {
data.batch.push(idlist[i]);
}
data = JSON.stringify(data);
data = encodeURIComponent(data);
param.setBatch(list.getBatch());
alarmNoticeService.updateRecord(param);
private List<Integer> batch;
public List<Integer> getBatch() {
return batch;
}
public void setBatch(List<Integer> batch) {
this.batch = batch;
}
}

<update id="updateRecord" parameterType="com.s3.po.AlarmNoticeCustom">
update gps.t_alarmnotice set readed = 1 where id in
<foreach collection="batch" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</update>