springboot工程中调用第三方接口json数据定时存入数据库

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: springboot工程中调用第三方接口json数据定时存入数据库

👏作者简介:大家好,我是Rockey,不知名企业的不知名Java开发工程师

🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦

📝联系方式:he18339193956,加我进群,大家一起学习,一起读书,一起对抗互联网寒冬👀

参考


springboot实现调用第三方接口获取数据并存入数据


第一步,首先访问接口获取接口里面的json数据


restTemplate 调用第三方接口获取json数据


第二步,解析json数据


jsonobject解析json字符串


第三步,存入数据库


首先介绍我用的是后端是MyBatisPlus来与数据库进行交互

不懂的可以参考的

MyBatisPlus基本入门------连接数据库查询 -----BaseMapper基本操作

首先在数据库中创建对应的表


CREATE TABLE `demo` (
  `id` CHAR(19) NOT NULL COMMENT '主键',
  `x_dis` INT(11) NOT NULL DEFAULT '0' COMMENT 'x轴',
  `y_dis` INT(11) NOT NULL DEFAULT '0' COMMENT 'y轴',
  `h_dis` INT(11) NOT NULL DEFAULT '0' COMMENT 'h轴',
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='网站统计日数据';


第二步

创建对应的entity


package com.chx.disService.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="StatisticsDisplacement对象", description="网站统计日数据")
public class demo implements Serializable {
    private static final long serialVersionUID = 1L;
    @ExcelProperty("id")
    @ApiModelProperty(value = "主键")
    @TableId(value = "id", type = IdType.ID_WORKER_STR)
    private String id;
    @ExcelProperty("X轴位移")
    @ApiModelProperty(value = "X轴位移")
    private Integer xDis;
    @ExcelProperty("Y轴位移")
    @ApiModelProperty(value = "Y轴位移")
    private Integer yDis;
    @ExcelProperty("H轴位移")
    @ApiModelProperty(value = "H轴位移")
    private Integer hDis;
}


第三步创建对应的mapper


package com.chx.disService.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.chx.disService.entity.demo;
public interface demoMapper extends BaseMapper<demo> {
}


mapper对应的xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.chx.disService.mapper.demoMapper">
</mapper>


然后就可以用demoMapper了


//这个如果报错不影响运行
    @Autowired
    private demoMapper demoMapper;
    @PostMapping(value = "/test3PostApi")
    public Object testPost1(@RequestBody JSONObject param) throws URISyntaxException {
        QueryWrapper<demo> queryWrapper = new QueryWrapper<>();
//
        RestTemplate restTemplate = new RestTemplate();
        URI uri = new URI("自己的接口地址");
//        String appCode = "52cc0ea3aaf24eb7a1250f327fea9f25";
        HttpHeaders headers = new HttpHeaders();
        //设置请求头为json格式
        headers.set("Accept-Charset", "UTF-8");
        headers.set("Content-Type", "application/json; charset=utf-8");
//        headers.add("Authorization", "APPCODE " + appCode);
        //添加参数,因为HttpEntity里面的参数是MultiValueMap类型的,所以使用这个map集合
        MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
        map.add("id","自己的参数");
        map.add("beginDate", "自己的参数");
        map.add("endDate", "自己的参数");
        map.add("version", "自己的参数");
        map.add("sign", "自己的参数");
        //添加请求的实体类,这里第一个参数是要发送的参数,第二个参数是请求头里的数据
        HttpEntity<Object> requestEntity = new HttpEntity<>(map, headers);
        //跟下面使用交换机的方法结果一样
        //第一种方法
        String s = restTemplate.postForObject(uri, requestEntity, String.class);
        //jsonObject就是获取数据的json数据
        JSONObject jsonObject = JSON.parseObject(s);
        System.out.println(jsonObject);
       /*
        //第二种方法
        //发送post请求
        ResponseEntity<String> exchange = restTemplate.exchange(uri, HttpMethod.POST, requestEntity, String.class);
        //将返回的值转换为json数据
        JSONObject jsonObject = JSON.parseObject(exchange.getBody());
        System.out.println(jsonObject);
        */
       //封装接口数据到数据库
//        JSONObject result = jsonObject.getJSONObject("code");
//        System.out.println(result);
        //解析json数据里面的数组
        //这个就是得到json数据里面的basedata数组
        JSONArray basedata = jsonObject.getJSONArray("basedata");
        System.out.println(basedata);
        //解析basedata里面的数据
        for (int i = 0; i <basedata.size(); i++) {
            demo demo = new demo();
            JSONObject jsonObject1 = basedata.getJSONObject(i);
            System.out.println(jsonObject1);
            //获取X值
            String x = jsonObject1.getString("X");
            demo.setXDis(Integer.valueOf(x.toString()));
            System.out.println(x);
            //获取Y值
            String y = jsonObject1.getString("Y");
            demo.setYDis(Integer.valueOf(y.toString()));
            //获取Z值
            String z = jsonObject1.getString("Z");
            demo.setHDis(Integer.valueOf(z.toString()));
            //将数据插入数据库
            demoMapper.insert(demo);
            String createDate = jsonObject1.getString("createDate");
            System.out.println(createDate);
        }
//        String code = jsonObject.getString("code");
//        System.out.println(code);
//        String deviceName = jsonObject.getString("deviceName");
//        System.out.println(deviceName);
//        List<Map<String, String>> resultList = (List<Map<String, String>>) jsonObject.get("Result");
//        for (Map<String, String> obj : resultList) {
//            System.out.println(obj);
//
//            //在这里把你获取到的数据封装到你需要的实体类中,调用你需要的方法即可存入数据库
//            //......
//        }
        return jsonObject;
    }

关键代码


测试数据库发现已经存入了


如果要加定时任务参考我的这篇博客

springboot工程如何设置定时任务详解(@Scheduled)以及cron表达式

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站点击跳转浏览


结语


🔥一个人可以掌握知识,但只有与他人交流才能形成智慧。

🔥One person can acquire knowledge, but wisdom is formed only in the exchange with others.

📝 欢迎大家关注博主公众号 Rockey小何同学 添加博主微信:he18339193956进群,一起学习,一起成长,一起提高认知。

🏆 我坚信人与人之间的差距是表面上是财富的差距,本质上是大脑中认知的差距,


我们下期再见。

目录
打赏
0
0
0
0
9
分享
相关文章
如何在Python中高效实现CSV到JSON的数据转换
在实际项目中,数据格式转换是常见问题,尤其从CSV到JSON的转换。本文深入探讨了多种转换方法,涵盖Python基础实现、数据预处理、错误处理、性能优化及调试验证技巧。通过分块处理、并行处理等手段提升大文件转换效率,并介绍如何封装为命令行工具或Web API,实现自动化批量处理。关键点包括基础实现、数据清洗、异常捕获、性能优化和单元测试,确保转换流程稳定高效。
116 82
关于商品详情 API 接口 JSON 格式返回数据解析的示例
本文介绍商品详情API接口返回的JSON数据解析。最外层为`product`对象,包含商品基本信息(如id、name、price)、分类信息(category)、图片(images)、属性(attributes)、用户评价(reviews)、库存(stock)和卖家信息(seller)。每个字段详细描述了商品的不同方面,帮助开发者准确提取和展示数据。具体结构和字段含义需结合实际业务需求和API文档理解。
淘宝商品评论数据API接口详解及JSON示例返回
淘宝商品评论数据API接口是淘宝开放平台提供的一项服务,旨在帮助开发者通过编程方式获取淘宝商品的评论数据。这些数据包括评论内容、评论时间、评论者信息、评分等,对于电商分析、用户行为研究、竞品分析等领域都具有极高的价值。
|
1月前
|
解析电商商品详情API接口系列,json数据示例参考
电商商品详情API接口是电商平台的重要组成部分,提供了商品的详细信息,支持用户进行商品浏览和购买决策。通过合理的API设计和优化,可以提升系统性能和用户体验。希望本文的解析和示例能够为开发者提供参考,帮助构建高效、可靠的电商系统。
47 12
基于SpringBoot+Vue实现的大学生就业服务平台设计与实现(系统源码+文档+数据库+部署等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
72 6
基于SpringBoot+Vue的班级综合测评管理系统设计与实现(系统源码+文档+数据库+部署等)
✌免费选题、功能需求设计、任务书、开题报告、中期检查、程序功能实现、论文辅导、论文降重、答辩PPT辅导、会议视频一对一讲解代码等✌
46 4
基于SpringBoot+Vue实现的大学生体质测试管理系统设计与实现(系统源码+文档+数据库+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
42 2
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
62 2
基于SpringBoot+Vue实现的冬奥会科普平台设计与实现(系统源码+文档+数据库+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
48 0
使用 Spring Boot 执行数据库操作:全面指南
使用 Spring Boot 执行数据库操作:全面指南
334 1
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等