You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中如何将动态创建的元素存入数据库并通过REST API访问

实现Exchange实例入库及API访问的步骤

第一步:选择数据库并设计表结构

存储资产价格优先推荐两类数据库:

  • 关系型数据库如MySQL、SQLite:适合小体量业务,结构简单好上手
  • 时序数据库如InfluxDB:针对时序类价格数据做了优化,查询历史价格性能更高

通用表结构参考(以关系型数据库为例,表名可自定义为exchange_price):

  • id:自增主键,唯一标识每条记录
  • exchange_name:交易所名称,对应Exchange类的name字段
  • btc_buy:BTC买入价
  • btc_sell:BTC卖出价
  • eth_buy:ETH买入价
  • eth_sell:ETH卖出价
  • create_time:数据写入时间,用于筛选历史时段价格数据

第二步:数据库写入逻辑实现

你当前用的是Java风格代码,以下是JDBC原生写入的补全示例,若用MyBatis、JPA等ORM框架可直接调用持久化方法省略手动参数拼接:

try{
    Exchange Coinbase = new Exchange();
    Coinbase.setName("Coinbase");
    Coinbase.setBtcBuy(priceRequestCoinbase(btcBuy));
    Coinbase.setBtcSell(priceRequestCoinbase(btcSell));
    Coinbase.setEthBuy(priceRequestCoinbase(ethBuy));
    Coinbase.setEthSell(priceRequestCoinbase(ethSell));

    // 新增数据库写入逻辑
    Connection conn = DriverManager.getConnection("你的数据库连接URL", "数据库用户名", "数据库密码");
    String insertSql = "INSERT INTO exchange_price(exchange_name, btc_buy, btc_sell, eth_buy, eth_sell, create_time) VALUES (?,?,?,?,?,?)";
    PreparedStatement pstmt = conn.prepareStatement(insertSql);
    pstmt.setString(1, Coinbase.getName());
    // 价格字段统一用BigDecimal避免浮点精度丢失
    pstmt.setBigDecimal(2, Coinbase.getBtcBuy());
    pstmt.setBigDecimal(3, Coinbase.getBtcSell());
    pstmt.setBigDecimal(4, Coinbase.getEthBuy());
    pstmt.setBigDecimal(5, Coinbase.getEthSell());
    pstmt.setTimestamp(6, new Timestamp(System.currentTimeMillis()));
    pstmt.executeUpdate();
    // 资源释放
    pstmt.close();
    conn.close();
} catch (SQLException e) {
    e.printStackTrace();
}

第三步:开发API接口供外部访问

以常用的Spring Boot框架为例,只需编写对应Controller层接口即可:

@RestController
@RequestMapping("/asset-price")
public class PriceController {
    @Autowired
    private PriceQueryService priceQueryService;

    // 示例接口:根据交易所名称查询最新价格
    @GetMapping("/latest")
    public Exchange getLatestExchangePrice(@RequestParam String exchangeName) {
        return priceQueryService.queryLatestByName(exchangeName);
    }

    // 可扩展按时间范围查询历史价格、查询所有交易所最新价格等接口
}

注意事项

  • 所有价格字段必须用BigDecimal类型存储和传输,完全避免浮点运算精度丢失问题
  • 可配置定时任务定期拉取交易所价格入库,保证数据时效性
  • 高并发场景下接口可加Redis缓存,相同请求短时间内无需重复查询数据库,提升响应速度

内容的提问来源于stack exchange,提问作者vynabhnnqwxleicntw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 12:45:07