1.定时任务调度服务XXL-JOB通过RestTemplate+多线程动态拉去股票接口数据,刷入数据库;
2.国内指数服务
3.板块指数服务
4.涨幅榜展示功能
5.涨停跌停数展示功能
6.成交量对比展示功能
7.个股涨停服务展示功能
8.个股详情展示功能包含分时行情、日k线、周K线图等
9.个股描述服务;
10.报表导出服务
开发工具版本要求:
注意事项:后期股票相关的数据量非常庞大,表与表之间尽量不要构建外键约束(提升数据库性能),同时也为后期分库分表准备!
因为我边的CentOS7连接不上 所以在这里面 用本地(windoms)运行
数据库可视化选用 SQLyog - 64 bit mysql用的是5.7.24
创建stock_parent maven工程:
接下来 复制以下maven到pom.xml
pom UTF-8 UTF-8 8 8 true 2.1.4 1.2.12 5.1.49 1.2.71 2.9.2 1.1.22 1.2.8 4.0.0-RC1 0.9.1 3.0.4 2.3.0 2.5.3 2.10.5 30.0-jre org.springframework.boot spring-boot-starter-parent ${spring-boot.version} pom import org.mybatis.spring.boot mybatis-spring-boot-starter ${mybatis-spring-boot-starter.version} com.github.pagehelper pagehelper-spring-boot-starter ${pagehelper-spring-boot-starter.version} mysql mysql-connector-java ${mysql-driver.version} org.apache.shardingsphere sharding-jdbc-spring-boot-starter ${sharding-jdbc.version} com.alibaba fastjson ${fastjson.version} com.alibaba druid-spring-boot-starter ${druid-spring-boot-starter.version} com.alibaba druid ${druid-core-version} io.springfox springfox-swagger2 ${springfox-swagger2.version} io.springfox springfox-swagger-ui ${springfox-swagger2.version} io.jsonwebtoken jjwt ${jjwt.version} com.alibaba easyexcel ${easyExcel.version} com.xuxueli xxl-job-core ${xxl-job-core.version} joda-time joda-time ${joda-time.version} com.google.guava guava ${google.guava.version} org.springframework.boot spring-boot-maven-plugin ${spring-boot.version} org.springframework.boot spring-boot-configuration-processor org.apache.maven.plugins maven-surefire-plugin ${maven.test.skip}
注意事项:
1.打包方式:pom
2.通过dependencyManagement、pluginManagement锁定开发中的依赖和插件的版本;
接下来 删除父工程的src
创建stock_parent的maven子工程stock_backend:
stock_backend工程被stock_parent父工程聚合,pom配置如下:
jar stock_backend 8 8 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-aop mysql mysql-connector-java org.springframework.boot spring-boot-starter-test test org.projectlombok lombok true org.mybatis.spring.boot mybatis-spring-boot-starter com.github.pagehelper pagehelper-spring-boot-starter com.alibaba druid-spring-boot-starter org.springframework.boot spring-boot-configuration-processor true joda-time joda-time ${project.artifactId} org.springframework.boot spring-boot-maven-plugin org.apache.maven.plugins maven-surefire-plugin
找到资料中的公共包结构
复制com
进入到项目的物理路径(IntelliJ IDEA 2020.1.3 x64)
不同的idea进行项目物理环境的选项不同
把刚才复制过来的com复制到main/java下面
这样就能得到目录结构(里面为空目录) 这样做的目的是不能一次次创建目录结构
安装
使用
生成效果
# web定义
server:port: 8081 #指定当前端口号spring:# 配置mysql数据源datasource:druid:username: rootpassword: rooturl: jdbc:mysql://127.0.0.1:3306/stock_db?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false&serverTimezone=Asia/Shanghaidriver-class-name: com.mysql.jdbc.Driver# 初始化时建立物理连接的个数。初始化发生在显示调用 init 方法,或者第一次 getConnection 时initialSize: 6# 最小连接池数量minIdle: 2# 最大连接池数量maxActive: 20# 获取连接时最大等待时间,单位毫秒。配置了 maxWait 之后,缺省启用公平锁,# 并发效率会有所下降,如果需要可以通过配置 useUnfairLock 属性为 true 使用非公平锁。maxWait: 60000# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒timeBetweenEvictionRunsMillis: 60000# 配置一个连接在池中最小生存的时间,单位是毫秒minEvictableIdleTimeMillis: 300000# 用来检测连接是否有效的 sql 因数据库方言而差, 例如 oracle 应该写成 SELECT 1 FROM DUALvalidationQuery: SELECT 1 FROM DUAL# 建议配置为 true,不影响性能,并且保证安全性。申请连接的时候检测,# 如果空闲时间大于 timeBetweenEvictionRunsMillis,执行 validationQuery 检测连接是否有效。testWhileIdle: true# 申请连接时执行 validationQuery 检测连接是否有效,做了这个配置会降低性能。testOnBorrow: false# 归还连接时执行 validationQuery 检测连接是否有效,做了这个配置会降低性能。testOnReturn: false# 是否自动回收超时连接poolPreparedStatements: truemaxPoolPreparedStatementPerConnectionSize: 20# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙filters: stat,wall# 通过connectProperties属性来打开mergeSql功能;慢SQL记录connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000# 配置mybatis
mybatis:type-aliases-package: com.itheima.stock.pojo #指定的包下类名取别名mapper-locations: classpath:mapper/*.xmlconfiguration:map-underscore-to-camel-case: true #开启驼峰映射cache-enabled: false #使全局的映射器启用或禁用缓存。lazy-loading-enabled: false #全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。aggressive-lazy-loading: true #当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。# pagehelper配置
pagehelper:helper-dialect: mysql #指定分页数据库类型(方言)reasonable: true #合理查询超过最大也,则查询最后一页support-methods-arguments: true # 支持通过Mapper接口参数来传递分页参数,默认falseparams: pacount=countSql # POJO或者Map中发现了countSql属性,就会作为count参数使用returnPageInfo: check # always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page
因为上面配置了少了一个mapper 所以我们现 在创建这个包
注意:
第一点
url: jdbc:mysql://127.0.0.1:3306/stock_db?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false&serverTimezone=Asia/Shanghai
这里面的url 如果是连接的是linux的 刚要写成Linux上的Ip 如果连接的是本地(win)则url 刚要写成
jdbc:mysql:///数据库名称或jdbc:mysql://localhost:3306/数据库名称jdbc:mysql://127.0.0.1:3306/数据库名称
第二点 本项目用到的mysql为5.7 不是8.0 所以把
driver-class-name: com.mysql.cj.jdbc.Driver 把cj删除
补充知识
driver-class-name: com.mysql.cj.jdbc.Driver mysql8.0
driver-class-name: com.mysql.jdbc.Driver mysql5.7
第三点 接口扫描
IntelliJ IDEA 2020.1.3 x64版本复制路径写法
视频中的idea版本复制路径写法
然后把复制过来的路径给放在下图所示
package com.itheima.stock;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@MapperScan("com.itheima.stock.mapper")
public class StockApp {public static void main(String[] args) {SpringApplication.run(StockApp.class, args);}
}
package com.itheima.stock.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/api")
public class UserController {@GetMapping("/test")public String getName(){return "itheima";}}
启动:
注意:这里面启动时 要注意你连接的mysql是linux的还是本地的 要注意他们的账户和密码否正确
启动成功
在浏览器上测试能够获取到
在做接口调试的时候 在这里面建议用postman 因为用浏览器只能用到git
演示使用课程资料中的------股票API接口测试.json