这个大多数会运用在跨境物流上,还有银行项目(温馨提示:只有公开的数据源才可以安全的使用--切勿自误)
比如说是获取海关信息,获取汇率信息 ......等等
第一步
新建实体类(示例);
public class Money {
//id 自增
private Integer ID;
//数量金额
private String qtyAmt;
//货币种类
private String cType;
//汇率金额
private String ZqtyAmt;
//汇率的货币
private String cTypeos;
//录入时间
private Date date;
public Integer getID() {
return ID;
}
public void setID(Integer ID) {
this.ID = ID;
}
public String getQtyAmt() {
return qtyAmt;
}
public void setQtyAmt(String qtyAmt) {
this.qtyAmt = qtyAmt;
}
public String getcType() {
return cType;
}
public void setcType(String cType) {
this.cType = cType;
}
public String getZqtyAmt() {
return ZqtyAmt;
}
public void setZqtyAmt(String zqtyAmt) {
ZqtyAmt = zqtyAmt;
}
public String getcTypeos() {
return cTypeos;
}
public void setcTypeos(String cTypeos) {
this.cTypeos = cTypeos;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public String toString() {
return "Money{" +
"ID=" + ID +
", qtyAmt='" + qtyAmt + '\'' +
", cType='" + cType + '\'' +
", ZqtyAmt='" + ZqtyAmt + '\'' +
", cTypeos='" + cTypeos + '\'' +
", date=" + date +
'}';
}
}
数据库的表,我就不演示了,应该都会.
第二步
写个批量新增的接口
public interface MoneyMapper {
//汇率转换 获取数据库
void ExchangeRateConversion(@Param("samples") List<Money> samples);
}
对应的mapper.xml sql语句实现
<?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.ruoyi.quartz.mapper.MoneyMapper">
<insert id="ExchangeRateConversion">
INSERT INTO money
(qtyAmt, cType, ZqtyAmt, cTypeos, date )
VALUES
<foreach collection="samples" item="sample" index="index" separator=",">
(
#{sample.qtyAmt},
#{sample.cType},
#{sample.ZqtyAmt},
#{sample.cTypeos},
#{sample.date}
)
</foreach>
</insert>
</mapper>
第三步
逻辑实现
由于这个在后台是直接由定时任务调用,所以controller层没有,我就直接展示,基础逻辑了.有需要可以直接copy.
List<String> samples = new ArrayList<>();
SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
String time=dateFormat.format(new Date());
System.out.println(time);
RestTemplate restTemplate = new RestTemplate();
String forObject = restTemplate.getForObject("http://m.safe.gov.cn/AppStructured/hlw/jsonRmb.do?date"+time, String.class);
List<Money> ss = new ArrayList<>();
forObject = forObject.replace("[[","[");
forObject = forObject.replace("]]","]");
forObject= forObject.replace("],[","];[");
String[] split = forObject.split(";");
for (String s : split) {
s = s.replace("[","");
s = s.replace("]","");
String[] split1 = s.split(",");
Money money = new Money();
money.setQtyAmt(split1[0]);
money.setcType(split1[1]);
money.setZqtyAmt(split1[2]);
money.setcTypeos(split1[3]);
money.setDate(new Date());
ss.add(money);
}
samples.add(forObject);
moneyMapper.ExchangeRateConversion(ss);
如果set实体类报红,检测数据类型是否一致,如果mapper报红,依赖是否有导入
原理: 首先通过http发送请求,获得当日的汇率数据,
其次,将得到的数据进行拆分,得到我们可以使用的list插入数据
最后依次对应数据库的列进行插入即可.
(如果有更好的方法 欢迎大家讨论)
第四步
效果展示