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
相关产品推荐
相关产品推荐

