避免在for循环内进行sql语句的增删改操作

		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);
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值