List<String> list = new ArrayList<>();
//设置状态(0代表数据删除 1代表数据新增 2代表数据修改 3代表其他)
int status = 3;
if (!dataList.isEmpty()) {
//获取chance;根据chance的状态选择新增或删除
for( EntityDTO entityDTO : dataList) {
String chance = entityDTO.getOpt();
//1判断chance
//删除数据
if (chance.equals("D")) {
//方法1:这种做法可以,但是很费时间,效率低(因为在for循环中)
// mapper.deleteOneEntity(entityDTO);
//方法2:删除根据主键id进行删除(所以在For循环外面设置一个)
//2.1设置调用删除数据的类型值
status = 0;
//2.2获取主键 id
String id = entityDTO.getId();
list.add(id);
}
//2 根据主键查询数据
if (chance.equals("A")) {
//查询数据库的方法可放在for循环里,因为它只得到一个结果集
EntityDTO entityReDTO = mapper.selectEntityPk(entityDTO);
//2.1 若查询结果不存在,则新增
if (StringUtils.isEmpty(entityReDTO )) {
mapper.saveEntity(entityDTO);
}
//2.2 若查询结果存在,再对比第二个字段
//3.1 查询结果存在,如果第二个字段不相等,进行修改操作
if (!StringUtils.isEmpty(entityReDTO )) {
mapper.updateEntityDTO(entityDTO);
}
}
}
}
//在业务流程完毕之后进行单独的数据操作
if(status == 0){
//执行批量数据删除
System.out.println("-----------------------------数据删除-----------------------------");
System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++"+list);
mapper.deleteBatchEntity(list);
}
避免在for循环内进行sql语句的增删改操作
最新推荐文章于 2024-06-12 15:33:08 发布