批量或单个 删除主表的同时也删除子表业务处理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhengTornado/article/details/82182149

场景:一个消防栓对应多个硬件设备,

所以需要删除主表数据的同时,也要把子表的数据全部删除

    @Autowired
    private DevicesMapper devicesMapper;
    @Autowired
    private UserMapper userMapper;
    @Autowired
    private OnenetDeviceMapper onenetDeviceMapper;

    /**
     * 批量或单个
     * 逻辑删除消防设备表和硬件设备表的数据
     * 先根据消防设备ID查询出所有硬件设备ID
     */
    @Override
    @Transactional
    public int delete(String[] devicesId){
        for(String str:devicesId){
            String devicesID=str;
            List<OnenetDevice> list=onenetDeviceMapper.findAllDevice(devicesID);
            //创建一个字符串数组,用于存放硬件设备表的所有id
            String [] ids=new String [list.size()];
            //取出集合中的所有id存到数组中
            for(int i=0;i<ids.length; i++){
                ids[i]=list.get(i).getId();
            }
            //逻辑删除硬件表的所有数据
            int result=onenetDeviceMapper.deleteOnenetDevice(ids);
            //物理删除oneNet平台上的数据
            for(OnenetDevice od:list){
                String onenetDevicesId=od.getOnenetDevicesId();
                DeleteDeviceApi api = new DeleteDeviceApi(onenetDevicesId, CommonUtil.key);
                BasicResponse<Void> response = api.executeApi();
                System.out.println("errno:"+response.errno+" error:"+response.error);       
            }   
        }
        //最后逻辑删除消防设备表中的数据
        int iden=devicesMapper.delete(devicesId);
        return iden;
    }
 /**
  * 逻辑删除,可以批量
  */
 int delete(@Param("devicesId")String[] devicesId);
      <!--逻辑删除 可批量  -->
  <update id="delete">
    update sys_devices 
    <set>
        status = 1
    </set>
    where devices_id in 
         <foreach item="devicesId" index="index"  collection="devicesId"  open="(" separator="," close=")">
                #{devicesId}
         </foreach>
  </update>
/**
 * 批量删除
 * @param onenetDevicesId
 * @return
 */
public Integer deleteOnenetDevice(@Param("id")String[] id);

<!-- 删除 -->
<delete id="deleteOnenetDevice">
    update sys_onenet_device
    <set>
        status = 1
    </set>
        where id in
    <foreach item="id" index="index" collection="id" open="(" separator="," close=")">
        #{id}
    </foreach>
</delete> 

“`

猜你喜欢

转载自blog.csdn.net/zhengTornado/article/details/82182149