使用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
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
好的,我可以为您提供一个简单的Java程序,用于获取图片地址并将其保存MySQL数据库。请确保您已经安装了MySQL数据库并设置好了连接参数。 首先,您需要导入以下依赖项: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; ``` 接下来,您可以使用以下代码来获取图片地址: ```java URL url = new URL("https://example.com/image.jpg"); BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); String inputLine; StringBuilder content = new StringBuilder(); while ((inputLine = in.readLine()) != null) { content.append(inputLine); } in.close(); String imageUrl = content.toString(); ``` 这将从指定的URL读取图片地址并将其存储在imageUrl字符串变量。 接下来,您可以使用以下代码将图片地址保存MySQL数据库: ```java String url = "jdbc:mysql://localhost:3306/mydatabase"; String username = "myusername"; String password = "mypassword"; try (Connection connection = DriverManager.getConnection(url, username, password)) { String sql = "INSERT INTO images (url) VALUES (?)"; PreparedStatement statement = connection.prepareStatement(sql); statement.setString(1, imageUrl); statement.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } ``` 这将创建一个名为“images”的表,并将图片地址插入到该表。 请注意,这只是一个简单的示例程序。您需要根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

学跑的猿

制作不易

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

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

打赏作者

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

抵扣说明:

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

余额充值