使用java获得网页数据并保存到mysql数据库(oracle大致同理)

     这个大多数会运用在跨境物流上,还有银行项目(温馨提示:只有公开的数据源才可以安全的使用--切勿自误)   

   比如说是获取海关信息,获取汇率信息 ......等等

第一步

         新建实体类(示例);

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插入数据

最后依次对应数据库的列进行插入即可.

(如果有更好的方法 欢迎大家讨论)

第四步

       效果展示

 

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要将Java中输入的数据保存MySQL数据库中,需要进行以下步骤: 1. 首先,需要在Java程序中连接到MySQL数据库。可以使用Java提供的JDBC(Java Database Connectivity)API来实现,具体可以使用JDBC驱动来建立连接,例如com.mysql.jdbc.Driver。 2. 接下来,需要在Java程序中创建一个Statement对象或者PreparedStatement对象来执行SQL语句。PreparedStatement对象比Statement对象更安全,因为它可以避免SQL注入攻击。 3. 使用SQL语句向MySQL数据库中插入数据。例如,使用INSERT INTO语句将数据插入到表中。 4. 将Java程序中输入的数据设置为SQL语句的参数,然后执行SQL语句。例如,使用PreparedStatement对象的setString()方法将字符串类型的数据设置为SQL语句的参数。 5. 最后,关闭JDBC连接和Statement对象或者PreparedStatement对象。 下面是一个示例代码,将名字和年龄插入到名为"person"的MySQL表中: ``` //连接到MySQL数据库 Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "username", "password"); //创建PreparedStatement对象 PreparedStatement pstmt = conn.prepareStatement("INSERT INTO person(name, age) VALUES(?, ?)"); //设置SQL语句的参数 pstmt.setString(1, "张三"); pstmt.setInt(2, 25); //执行SQL语句 pstmt.executeUpdate(); //关闭连接和PreparedStatement对象 pstmt.close(); conn.close(); ``` 注意:这只是一个示例代码,实际使用时需要根据具体情况进行修改和调整。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学跑的猿

制作不易

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值