SpringBoot结合OceanBase存储股票数据

大漠孤烟直,长河落日圆。

1 前言

前文中已经介绍了 java 使用爬虫的方法获取股票的基本信息和 k 线数据,并且依据此建立了对应的选股模型,但是在分析数据之后需要将获取到的数据进行保存,方便以后进行数据分析和查询。在前文中已经讲述了 OceanBase 数据库的内容, 在本文中将使用 OceanBase 数据库和 mybatis-plus 进行数据的存储。

2 环境准备

首先需要引入 mybatis-plus 依赖,然后添加对应的配置文件。mybatis-plus 是当下很流行的 ORM 框架,基本封装了简单的增删改查方法,对于简单的应用十分适用,另外 mybatis-plus 对于 java8lambda 表达式的支持也非常的友好。

xml 复制代码
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.0</version>
</dependency>

这里我们需要使用的是 hikari 数据库连接池,使用的是 mysql8 的驱动,目前在 springboothikari 已经是默认的数据库连接池,具体的配置如下图所示:

mybatis-plus 的配置完成之后,我们需要创建数据库表结构,根据之前抓取的股票信息,包括股票的基本信息、模型的选择结果等,具体如下图所示:

3 数据抓取与存储

数据的抓取,我们采用定时任务的方式,通过定时任务去调用任务 SnowStockUtils.queryStockList 获取股票信息列表,因为每天都有可能会有新的股票上市,所以在保存数据时,需要判断数据是否存在,如果存在则更新数据,否则就需要更新数据。正常情况下,我们需要先进行一次查询,但是这样操作会多一次 io 操作,这里采用的是在 sql 层面来结解决这个问题,使用 mysqlon duplicate key update 的方式来实现,具体的实现代码如下图所示:

使用该方式可以减少一次数据库的查询操作,通过 mysql 数据库的特性来解决数据保存或者更新的问题。该种方式只是适用于保存的场景,对于部分更新的数据可能会存在问题,比如某些字段可能为空,但是数据库约束不为空的情况。对于这样的情况就会出现保存失败的情况。

通过任务可以先执行股票的基本信息,然后获取股票的 k 线数据,最后调用股票的数据模型进行计算,获取最终的选择结果,最后需要将数据存放在数据库中。

在上文中已经进行了数据的存储,在查询数据时,如果需要加速数据的查询和数据处理,就需要 OceanBase 的并行计算的功能,如下图所示, 添加 /*+parallel(3) */ 即可, 其中的 3 指的是并行数,和数据库的配置有关系。使用 OceanBase 使用一些特殊的语法或者配置,提高数据库的读写性能,这对一些并发业务来说帮助很大,能够大幅提高服务的性能,此外它还提供了强大的数据库迁移工具、数据统计、性能监控等内容,可以说是开发者的福音。

4 总结

在本文中,主要介绍了 mybatis-plus 的配置信息,整合了之前爬虫得到的数据,并且使用了 OceanBase 数据库进行存储,在保存数据时采用了 on duplicate key update 的方式一次执行就解决了保存和更新的问题,在保存数据库信息后,介绍了其分析和查询的方法,这里使用到了 OceanBase 的并行计算的内容。本文中所涉及的代码已经上传至 github, 欢迎大家点赞关注。项目 github 地址 springboot-auth

相关推荐
midsummer_woo7 小时前
基于springboot+vue+mysql的中药实验管理系统设计与实现(源码+论文+开题报告)
vue.js·spring boot·mysql
ai小鬼头8 小时前
AIStarter教你快速打包GPT-SoVITS-v2,解锁AI应用市场新玩法
前端·后端·github
paopaokaka_luck9 小时前
基于SpringBoot+Vue的汽车租赁系统(协同过滤算法、腾讯地图API、支付宝沙盒支付、WebsSocket实时聊天、ECharts图形化分析)
vue.js·spring boot·后端·websocket·算法·汽车·echarts
remCoding9 小时前
Java大厂面试实录:从Spring Boot到AI微服务架构的深度解析
spring boot·redis·kafka·java面试·spring ai·jakarta ee·ai微服务
giao源9 小时前
Spring Boot 整合 Shiro 实现单用户与多用户认证授权指南
java·spring boot·后端·安全性测试
【本人】9 小时前
Django基础(四)———模板常用过滤器
后端·python·django
豌豆花下猫10 小时前
Python 潮流周刊#111:Django迎来 20 周年、OpenAI 前员工分享工作体验(摘要)
后端·python·ai
LaoZhangAI10 小时前
ComfyUI集成GPT-Image-1完全指南:8步实现AI图像创作革命【2025最新】
前端·后端
LaoZhangAI10 小时前
Cline + Gemini API 完整配置与使用指南【2025最新】
前端·后端