批量增删改查代码

一、思路

        其实增删改查每次都是调用接口,那我们将手动去调用这个接口改为数据多少条数据,那就调用多少次接口,不就很方便了吗?

        既然是多次调用,那我们就可以通过循环去发送http请求来调用我们接口,不就能做到批量的增删改查了吗?

        这里我以批量查寻对应数据和删除为例子:这两个我们都可以通过ID来作为查询条件进行操作,而ID批量这样子放入,1,2,3,4 或者这样子 1 2 3 4 发现规律了吗?他们都是有分隔符号,那么就可以把分隔符号去掉,然后一个一个的装入数组中,这样子就把要批量操作的数据收集起来了。我们接下来就可以用循环根据数组的个数来进行循环的次数,循环里面写好http请求的配置,然后每次发送的查询的ID就是从数组里面拿出来,作为条件去发送http请求。

二、代码

package com.ruoyi.course.controller;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.*;

public class BatchHttpRequestSender {
    //发送地址
    private static final String BASE_URL = "http://127.0.0.1:1111/mes/pro/workorder/end/";

    //token
    private static String token = "Bearer eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6Ijk1YzMxMWEyLTU5NDUtNDg1Yy1hYzc5LTc2NTU0NTM4YTNiNSJ9.2SO70ZZ-JfWxhn0x3i6xPAuGsVoWPjdYR1lTBYWPwlyEW44GiZOPu2Cridm_ja9beJAe0JSuii1ATJ_3D77KGw";

    //匹配拆分规则,一般不要动!!!!!!!
    private static final String[] possibleSeparators = {" ", "\n", "\t", "\r", " ,", "、", ","};

    public static void main(String[] args) {
        //可以将内容粘贴到input变量,也可以让内容直接输入到控制台中
        String input = "";
        //运行发送批量请求
        runBatchHttpRequestSend(input);
    }



    public static void runBatchHttpRequestSend(String input){
        //也可以不输入直接粘贴到控制台中
        String[] numberArray = null;

        if (input == null || input.isEmpty()) {
            Scanner scanner = new Scanner(System.in); // 创建一个Scanner对象,用于读取用户输入

            List<String> inputLines = new ArrayList<>(); // 创建一个列表来存储所有输入行

            System.out.println("粘贴进来,换行后输入'exit'按回车结束:"); // 提示用户输入多行

            while (true) { // 开始一个无限循环
                String inputAuto = scanner.nextLine(); // 读取一行输入

                // 检查输入是否为退出关键字
                if (inputAuto.equalsIgnoreCase("exit")) {
                    break; // 如果是,则退出循环
                }

                inputLines.add(inputAuto); // 如果不是,则将输入添加到列表中
            }

            // 输出所有输入的字符串
            numberArray = inputLines.toArray(new String[0]); // 将列表转换为String数组
            System.out.println("您输入的所有字符串是:");
            for (String line : numberArray) {
                System.out.println(line);
            }

            scanner.close(); // 关闭Scanner对象
        } else {
            //将字符串转为数组
            numberArray = printNumbers(input);
        }

        for (String number : numberArray) {
            //发送请求
            sendHttpRequest(number, token);
        }

        System.out.println("完成");
    }

    //将字符串转为数组
    public static String[] printNumbers(String input) {
        //非空判断
        if (input == null || input.isEmpty()) {
            return new String[]{};
        }

        //判断规则
        String splitChar = detectSeparator(input);

        //如果未找到分隔符,则返回一个空数组
        if (splitChar.equals("error")) {
            System.out.println("未找到分隔符");
            return new String[]{};
        }

        // 将输入的字符串按空格分隔成为数组
        String[] numberArray = input.split(splitChar);

        // 将数组转换为列表以便于遍历
        ArrayList<String> numberList = new ArrayList<>(Arrays.asList(numberArray));

        System.out.println("in (");

        // 遍历并输出每个元素
        for (String number : numberList) {
            System.out.println(number + ",");
        }
        System.out.println(")");

        System.out.println();

        System.out.println("总数据量:" + numberList.size());

        return numberArray;
    }

    //判断采用的分隔符方法
    public static String detectSeparator(String input) {
        // 常见的分隔符列表及其计数器
        Map<String, Integer> separatorCounts = new HashMap<>();

        for (String separator : possibleSeparators) {
            separatorCounts.put(separator, 0);
        }

        // 遍历输入字符串的每个字符
        for (char c : input.toCharArray()) {
            if (separatorCounts.containsKey(String.valueOf(c))) {
                int count = separatorCounts.get(String.valueOf(c));
                count++; // 增加计数
                separatorCounts.put(String.valueOf(c), count);
                if (count >= 5) { // 如果计数达到5,则返回该分隔符
                    return String.valueOf(c);
                }
            }
        }

        // 如果没有找到计数达到5的分隔符,则返回一个特殊字符或空字符
        return "error"; // 或者你可以抛出异常,表示未找到满足条件的分隔符
    }

    private static void sendHttpRequest(String workOrderId, String token) { // 添加了token参数
        try {
            URL url = new URL(BASE_URL + workOrderId);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");

            // 添加验证token的请求头
            connection.setRequestProperty("Authorization", "Bearer " + token); // 设置请求头

            // 获取响应码
            int responseCode = connection.getResponseCode();
            System.out.println("Response Code for Work Order ID " + workOrderId + ": " + responseCode);

            if (responseCode == HttpURLConnection.HTTP_OK) {
                // 读取响应内容
                BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                String inputLine;
                StringBuffer response = new StringBuffer();

                while ((inputLine = in.readLine()) != null) {
                    response.append(inputLine);
                }
                in.close();

                // 输出响应内容
                System.out.println("Response for Work Order ID " + workOrderId + ": " + response.toString());
            } else {
                System.out.println("GET request not worked for Work Order ID " + workOrderId);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值