Java多线程操作mybatis进行sql查询

本文介绍了在缺乏规范化的小公司环境中,如何使用Java的CompletableFuture进行数据库资源(如tableValue)的异步搜索,包括多个数据源的并发获取,以及在需要事务时的编程式事务处理策略。
摘要由CSDN通过智能技术生成

小公司没啥规范,表也设计的一塌糊涂,没办法只能使用这个办法了

    public dataTable resourceAnalysis(String lon, String lat, String fxfw) {
        // 点
        String yxPoint = " 'POINT(" + lon + " " + lat + ")' ";
        // 资源搜索半径
        double circles = Double.parseDouble(fxfw) * 1000;
        // 结果集
        DataAroundTheFirePoint dataAroundTheFirePoint = new DataAroundTheFirePoint();
 

        CompletableFuture<List<tableValue>> dlDataFuture = CompletableFuture.supplyAsync(() -> resourceMapper.getDlData(yxPoint, circles));

        CompletableFuture<List<tableValue>> ysszDataFuture = CompletableFuture.supplyAsync(() -> resourceMapper.getYsszData(yxPoint, circles));

        CompletableFuture<List<tableValue>> sllbDataFuture = CompletableFuture.supplyAsync(() -> resourceMapper.getSllbData(yxPoint, circles));

        CompletableFuture<List<tableValue>> qyDataFuture = CompletableFuture.supplyAsync(() -> resourceMapper.getQyData(yxPoint, circles));

        CompletableFuture<List<tableValue>> lingZuDataFuture = CompletableFuture.supplyAsync(() -> resourceMapper.getLingZuData(yxPoint, circles));

        CompletableFuture<List<tableValue>> yuBiDuDataFuture = CompletableFuture.supplyAsync(() -> resourceMapper.getYuBiDuData(yxPoint, circles));

        CompletableFuture<List<FhssWeixian>> fujinFengxianFuture = CompletableFuture.supplyAsync(() -> resourceMapper.getFujinFengxian(yxPoint, circles));

        CompletableFuture<List<JcdlJmd>> fuJinJuMinDianFuture = CompletableFuture.supplyAsync(() -> resourceMapper.getFuJinJuMinDian(yxPoint, circles));

        CompletableFuture<List<FhssZdbhmb>> fuJinBaoHuMuBiaoFuture = CompletableFuture.supplyAsync(() -> resourceMapper.getFuJinBaoHuMuBiao(yxPoint, circles));

        CompletableFuture<List<tableValue>> xujiDataFuture = CompletableFuture.supplyAsync(() -> resourceMapper.getXujiData(yxPoint, circles));

        CompletableFuture<List<JcdlLdxb>> dxDataFuture = CompletableFuture.supplyAsync(() -> resourceMapper.getDxData(Double.parseDouble(lon),Double.parseDouble(lat)));

        CompletableFuture<Void> allTasks = CompletableFuture.allOf(dlDataFuture, ysszDataFuture,
                sllbDataFuture, qyDataFuture, lingZuDataFuture, yuBiDuDataFuture,
                fujinFengxianFuture, fuJinJuMinDianFuture, fuJinBaoHuMuBiaoFuture, xujiDataFuture, dxDataFuture);
        //等待所有任务完成,事件由执行时间最长的那个sql决定
        allTasks.join();


        //使用的时候只要使用join()方法就可以取出数据啦,例如 xujiDataFuture.join() 

        //要求有事务的时候,建议使用编程式事务

    }

别吐槽我不用英文命名变量啦,没办法,领导不懂英文,让我们用拼音首字母缩写(T-T)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值