同步外部接口数据的一些记录和分享

https://blog.csdn.net/jsnhux/article/details/80116921

https://blog.csdn.net/jsnhux/article/details/80116921

同步外部接口数据的一些记录和分享

灵葱 2018-04-28 10:03:49  2086  收藏 1
展开
1、spring boot之定时器任务
@Component
public class JobScheduler {

    protected final static Logger logger = LoggerFactory.getLogger(JobScheduler.class);

    @Autowired
    private IResponsionService responsionService;

    //每天凌晨两点执行
    @Scheduled(cron = "0 0 2 * * ?")
    //@Scheduled(cron="0/10 * *  * * ? ")//每10秒执行一次
    public void checkUserLoginStatus() {
        logger.info("定时任务开始......");
        long begin = System.currentTimeMillis();
        try{
            int falg = responsionService.updateCloseJobOrder();
        }catch (Exception e){
            logger.error(e.getMessage());
        }
        long end = System.currentTimeMillis();
        logger.info("定时任务结束,共耗时:[" + (end-begin) / 1000 + "]秒");
    }
}
 
2、OKHttp请求接口数据
 OkHttpClient client = new OkHttpClient();//创建OkHttpClient对象。

        FormBody.Builder formBody = new FormBody.Builder();//创建表单请求体

        formBody.add("username","zhangsan");//传递键值对参数


        Request request = new Request.Builder()//创建Request 对象。
                .url("http://www.baidu.com")
                .post(formBody.build())//传递请求体
                .build();

        try{
            Response response = client.newCall(request).execute();

            if (response.isSuccessful()) {
                String msg = response.body().string();
                System.out.println(msg);
            } else {
                System.out.println("连接服务器失败返回错误代码" + response.code());
            }
        }catch(Exception e){

        }
 
在调用外部接口获取数据的时候,用于接受数据的参数类型(dto的属性)最好简单一点,简单不易出错的类型一般有:Long,Integer,String等,一些“偏僻”的类型例如Byte,BigDecimal,LocalDateTime,Date等必要的时候(如果不是经常参与运算,只是用来数据的展示等)用String类接收,这样能避免通过Json对象转Java对象的时候出现问题。
下面写一下Json字符串转java对象:

String msg = response.body().string();  //msg是符合json格式的字符串
ReciveResultDTO resultDTO=JSON.parseObject(msg,ReciveResultDTO.class); 
1
2
注意:这里用的JSON是阿里巴巴的 com.alibaba.fastjson.JSON
maven引入fastjson的配置:

<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>fastjson</artifactId>
   <version>1.2.32</version>
</dependency>
1
2
3
4
5
3、数据源的使用
数据源的切换:

//用法1:
//使用@DataSource注解在方法级别切换数据源(推荐)

@DataSource(DataSourceNames.WDS_INFO)
public int getCountUnReadBycid(MessageInfoDTO messageInfoDTO){
    return   messageDAO.getCountByUnread(messageInfoDTO);
}
//@DataSource配置的数据源有效范围在本方法内, 就是本方法内无论调用多少次DAO查询都会使用该数据源.

//@DataSource注解只能加在Service方法上, 加在DAO上是无效的.

//在Service方法内调用本实例的其他方法, 将导致其他方法的@DataSource配置失效. 例如:

@DataSource(DataSourceNames.WDS_INFO)
public void method1(MessageInfoDTO messageInfoDTO){
    //此处使用数据源WDS_INFO
    messageDAO.getCountByUnread(messageInfoDTO);
    //调用method2不会使用数据源RDS_COMMON
    method2();
}

@DataSource(DataSourceNames.RDS_COMMON)
public void method2(){
    readDAO.readSomething();
}
/**因为在method1方法内部调用method2, 导致AOP失效, @DataSource注解不会被读取, 所以method2执行的时候依然使用WDS_INFO数据源. 这种情况需要用到下面的手动切换数据源.*/


//用法2:
/**手动切换数据源(不推荐)
手动切换数据源需要考虑数据源的作用范围以及回收, 如果使用不慎很容易出现BUG, 所以推荐使用DataSource注解的方式切换数据源*/

try {
    DataSourceHolder.putDataSource(DataSourceNames.RDS_COMMON);
    //do your work
} finally {
    DataSourceHolder.removeDataSource(DataSourceNames.RDS_COMMON);
}

/**调用DataSourceHolder.putDataSource切换到你想设置的数据源
此时可以发起DAO调用, 无论调用多少次, 都会使用你手动设置的数据源.
如果发起对其他Service的调用, 而且Service方法上有@DataSource注解, 则在Service方法范围内会使用该注解配置的数据源, 调用完成会退回成你手动设置的数据源.
手动设置数据源的话, 大部分情况下需要在finally块中删除你设置的数据源, 以免对后面代码的数据源产生影响.*/
 
4、Mybatis 批量插入数据
Dao:

//批量同步来电通话记录
Integer batchInsertInRecords(List<CallRecordDTO> list);
1
2
Xml:

<insert id="batchInsertInRecords">
    INSERT INTO t_call_record_tr(
        in_id,unique_id,combo_cost,
        ...
    ) VALUES
    <foreach collection="list" item="item" index="index" separator="," >
        <trim prefix="(" suffix=")">
            #{item.id},#{item.unique_id},
            <choose>
                <when test="item.combo_cost != null and item.combo_cost !=''">
                    #{item.combo_cost},
                </when>
                <otherwise>
                    '',
                </otherwise>
            </choose>
            ...
        </trim>
    </foreach>
</insert>
 

————————————————
版权声明:本文为CSDN博主「灵葱」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jsnhux/article/details/80116921

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/327684.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET Standard 2.0:整齐划一的目标

在两个月前公布.NET Standard 2.0时&#xff0c;微软认为新版标准的目标在于为现有的三个主要.NET平台&#xff1a;.NET Framework、.NET Core&#xff0c;以及Xamarin提供一个坚实的底层基础&#xff0c;并为未来满足树莓派或IoT等全新类型设备需求可能需要创建的分支提供支持…

vue中路径带# vs 不带#

路由模式有两种 hash&#xff1a;路径带 # 符号&#xff0c;如 http://localhost/#/loginhistory&#xff1a;路径不带 # 符号&#xff0c;如 http://localhost/login 修改路由配置&#xff0c;代码如下&#xff1a; export default new Router({mode: history,routes: [] }…

centos7离线安装oracle11g,CentOS 7.5离线安装Oracle 11gR2

操作系统&#xff1a;CentOS 7.5 64bit&#xff0c;安装方式为gnome Desktop&#xff0c;附加系统工具以及兼容X Window安装包Oracle版本&#xff1a;11gR2Oracle11gR2官方文档链接安装系统建立默认用户的时候建立非oracle的账号。由于是离线安装&#xff0c;使用ssh登录&#…

Java IO: FileOutputStream

转载自 Java IO: FileOutputStream译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) FileOutputStream可以往文件里写入字节流&#xff0c;它是OutputStream的子类&#xff0c;所以你可以像使用OutputStream那样使用FileOutputStream。 这是一个FileOutputStr…

Struts文件上传与下载详解_上传单个文件

大家都知道Servlet上传文件的时候用的是commons-fileupload插件上传的&#xff0c;但是过程极其的麻烦&#xff0c;同样Struts2也有自带的文件上传&#xff0c;但是过程比Servlet里面的简单了不少&#xff0c;接下来请大家看演示&#xff1a; 我们现在先建一个表单用于上传文件…

IP暴露接口IP白名单设置

暴露接口IP白名单设置 暴露接口IP白名单设置 CrazyL- 2018-01-03 14:36:15 4797 收藏 1 展开 String realIp IPUtil.getIpAddr(request); if(!"0:0:0:0:0:0:0:1".equals(realIp)){ List<String> ipList Resources.readLines(Resources.getR…

两年来的core折腾之路几点总结,附上nginx启用http2拿来即用的配置

为什么要迁移&#xff0c;江湖上传说windows server的稳定性不如某某某&#xff0c;这类议题与八卦新闻没两样&#xff0c;不谈&#xff0c;如果windows的价钱能够和linux相同或者差异不至于那么大&#xff0c;我才懒得换&#xff0c;因为穷&#xff0c;这才是重点。 涉及IO路径…

Vue(笔记)

所有东西必须都在标签里面进行定义&#xff0c;都在div中 报错后不断npm和cnpm Vue简介 Vue (读音/vju/, 类似于view)是一套用于构建用户界面的渐进式框架&#xff0c;发布于2014年2月。与其它大型框架不同的是&#xff0c;Vue被设计为可以自底向上逐层应用。Vue的核心库只关…

Java IO: RandomAccessFile

转载自 Java IO: RandomAccessFile译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) RandomAccessFile允许你来回读写文件&#xff0c;也可以替换文件中的某些部分。FileInputStream和FileOutputStream没有这样的功能。 创建一个RandomAccessFile 在使用Rand…

Struts文件上传与下载详解 _上传多个文件

在上一篇中给大家列出的单个文件的上传&#xff0c;那么这一篇咱们讲讲上传多个文件改怎么作呢&#xff1f;由于过程和上传单个文件的类似&#xff0c;所以在这里不细说&#xff0c;相信大家都能看懂&#xff0c;看不懂的可以在评论区留言&#xff0c;我看到之后会及时回复的&a…

oracle执行runstats,oracle runstats工具

------以sys登录进行授权 grant select on sys.v_$timer to suk; grant select on v_$mystat to suk; grant select on sys.v_$statname to suk; grant select on sys.v_$latch to suk;------This is the test harness I use to try out different ideas. It shows two vital s…

java通过poi读取excel中的日期类型数据或自定义类型日期

java通过poi读取excel中的日期类型数据或自定义类型日期 Java 读取Excel表格日期类型数据的时候&#xff0c;读出来的是这样的 12-十月-2019&#xff0c;而Excel中输入的是 2019/10/12 或 2019-10-12 poi处理excel时&#xff0c;当excel没有明确指明是哪个类型的数据时&…

Struts文件上传与下载详解_文件的下载

在 两篇我们主要说的是文件的上传&#xff0c;既然有上传那就有下载&#xff0c;那么咱们看一下struts里面是怎么个下载法&#xff01; 1.写个文件下载的表单页面&#xff1a; <a href"downLoad.action?fileName1111.jpg">下载文件</a>很简单的我们写一…

Java IO: File

转载自 Java IO: File译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) Java IO API中的FIle类可以让你访问底层文件系统&#xff0c;通过File类&#xff0c;你可以做到以下几点&#xff1a; 检测文件是否存在读取文件长度重命名或移动文件删除文件检测某个路…

java计算出生到现在经历了多少天

总是不知道自己现在几岁了&#xff0c;这个程序帮你解决 package com.kuang.demo07; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner;public class demo {public static void main(String[] args) th…

微软的FreeBSD社区推广活动 北京站,你没看错!微软现在是一家名副其实的开源公司

自2012年开始&#xff0c;微软云计算与企业事业部和Citrix思杰&#xff0c;NetApp达成合作&#xff0c;共同开发出第一版针对Hyper-V虚拟设备驱动以及相关的用户态程序&#xff0c;并将此称之为集成服务 (Integration Service) 。微软也紧密地和FreeBSD社区合作&#xff0c;所有…

别羡慕别人的舒服,静下心来坚持奋斗!!!

通常给家里打电话的时候是晚上23点之后&#xff0c;因为家里也知道我这边忙&#xff0c;我也知道家里23点之前也在忙&#xff0c;所以选择在23点之后和家里联系联系&#xff0c;聊聊家常。自从到济南3年之久&#xff0c;即使在忙也每隔3-5天就给家里通一次电话&#xff0c;每次…

粉虫螨过敏性鼻炎

https://zhidao.baidu.com/question/1452443485981809220.html 粉虫螨过敏引起鼻炎&#xff0c;咽炎.怎么办 2018-01-04 螨虫过敏分很多症状&#xff0c;常见的有皮肤过敏和呼吸道过敏两类&#xff1a; 这个作者写的非常的正确 一、皮肤过敏&#xff1a;主要…

Linux ss命令 报错,ECS Linux中ss命令显示连接状态的使用说明

1. ss命令可用来获取socket统计信息&#xff0c;这个命令输出的结果类似于netstat输出的内容&#xff0c;但是它能够显示更多更详细的TCP连接状态的信息&#xff0c;且比netstat更快更高效。ss命令能够从内核空间直接得到信息&#xff0c;netstat命令读取各种/proc 文件收集信息…

Asp.Net Core 通过中间件防止图片盗链

一、原理 要实现防盗链&#xff0c;我们就必须先理解盗链的实现原理&#xff0c;提到防盗链的实现原理就不得不从HTTP协议说起&#xff0c;在HTTP协议中&#xff0c;有一个表头字段叫referer&#xff0c;采用URL的格式来表示从哪儿链接到当前的网页或文件。换句话说&#xff0c…