👏作者简介:大家好,我是Rockey,不知名企业的不知名Java开发工程师
🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦
📝联系方式:he18339193956,加我进群,大家一起学习,一起读书,一起对抗互联网寒冬👀
参考
springboot实现调用第三方接口获取数据并存入数据
第一步,首先访问接口获取接口里面的json数据
第二步,解析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进群,一起学习,一起成长,一起提高认知。
🏆 我坚信人与人之间的差距是表面上是财富的差距,本质上是大脑中认知的差距,
我们下期再见。