springboot项目初始化执行sql

12 篇文章 0 订阅

Sprint Boot应用可以在启动的时候自动执行项目根路径下的SQL脚本文件。我们需要先将sql脚本写好,并将这些静态资源都放置在src/main/resources文件夹下。

再配置application.yml:

spring.datasource.initialization-mode

      必须配置初始化模式initialization-mode,否则不生效。initialization-mode属性有always、embedded和never。

  • always表示Spring Boot应用启动时始终执行数据库初始化
  • embedded表示只初始化内存数据库,比如H2数据库
  • never表示从不执行初始化数据库

        需要注意的是,配置之后,每次启动都会执行一遍sql文件。但是我们一般都是要求只执行一次。所以我们需要在sql语句中,处理好如果已存在的处理方式。如建表语句中加入:if not exist 判断建表。

spring.datasource.platform

     spring.datasource.platform是数据库平台内容配置项,主要有mysql、postgresql、oracle等。

spring.datasource.schema

    spring.datasource.schema一般配置的是存放的是DDL脚本,即通常为创建或更新库表的脚本。该配置项时数组模式,所以可以配置多个:

application.xml:配置方式:

spring.datasource.schema[0]=classpath:sql/schema-${spring.datasource.platform:mysql}.sql
spring.datasource.schema[1]=classpath:sql/schema-${spring.datasource.platform:mysql}-1.sql

application.yml:配置方式:

spring:
  datasource:
    schema: classpath:sql/schema-${spring.datasource.platform:mysql}.sql, classpath:sql/schema-${spring.datasource.platform:mysql}-1.sql

spring:
  datasource:
    schema:
      - classpath:sql/schema-${spring.datasource.platform:mysql}.sql
      - classpath:sql/schema-${spring.datasource.platform:mysql}-1.sql

spring.datasource.data

spring.datasource.data中一般是DML脚本,即通常为数据插入脚本

该配置项时数组模式,所以可以配置多个:

application.xml:配置方式:

spring.datasource.data[0]=classpath:sql/data-${spring.datasource.platform:mysql}.sql
spring.datasource.data[1]=classpath:sql/data-${spring.datasource.platform:mysql}-1.sql

application.yml:配置方式:

spring:
  datasource:
    data: classpath:data_1.sql, classpath:data_2.sql

spring:
  datasource:
    data:
      - classpath:data_1.sql
      - classpath:data_2.sql

spring.datasource.separator

       spring.datasource.separator是配置sql的断句分割符的,默认是以';'作为断句的分隔符的。但是很多时候我们的sql语句中包含";"但是不是一整个sql语句,这时候使用”;“作为分隔符就会报错。

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'xxxxxx' at line 1

例如我们有存储过程

-- 当存储过程`pro1`存在时,删除。
drop procedure if exists pro1;
-- 创建存储过程`p1`
create procedure pro1()
begin
  declare row_num int;
  select count(*) into row_num from `t_user` where id = 'root';
  if row_num = 0 then
    INSERT INTO `t_user`(`username`, `password`) VALUES ('root', '123456');
  end if;
end;
-- 调用存储过程`pro1`
call pro1();
drop procedure if exists pro1;

这时候就会报错。通过 spring.datasource.separator我们就可以将默认的断句分割符改为指定值。如:spring.datasource.separator=$$。

-- 当存储过程`pro1`存在时,删除。
drop procedure if exists pro1;$$
-- 创建存储过程`p1`
create procedure pro1()
begin
  declare row_num int;
  select count(*) into row_num from `t_user` where username = 'root';
  if row_num = 0 then
    INSERT INTO `t_user`(`username`, `password`) VALUES ('root', '123456');
  end if;
end;$$
-- 调用存储过程`pro1`
call pro1();$$
drop procedure if exists pro1;$$

 但是,由于pring.datasource.separator是全局的配置,一但将sql脚本的断句分隔符从';'变成'$$',所以需要在DDLDML语句的';'后加'$$',不然可能会出现将整个脚本当成一条sql语句来执行的情况。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 基于SpringBoot快速开发的爬虫项目源码+项目使用说明+sql数据库.zip 基于SpringBoot快速开发的爬虫项目源码+项目使用说明+sql数据库.zip 基于SpringBoot快速开发的爬虫项目源码+项目使用说明+sql数据库.zip 1、该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能。 1 项目简介 1.1 功能介绍 基于WebMagic-0.7.3开源框架实现的爬虫项目 基于SpringBoot框架搭建 支持爬取主流新闻网站的新闻数据 支持爬取东方财富网A股所有股票250日行情,数据量达到100万 支持自动更新数据 支持CCTV欧洲杯2020比赛数据爬取 1.2 数据落库位置 新闻数据存储在MongoDB 股票数据存储在MySQL的stock数据库 1.3 目前支持爬取网站: 新闻 腾讯新闻 凤凰资讯 股票 东方财富 个股信息 东方财富 k线信息 东方财富 交易日信息 东方财富 新股信息 竞技赛事 CCTV 欧洲杯2020赛事 2 使用说明 2.1 数据库准备 1. 准备有效MongoDB、MySQL数据库,并配置到resources/application-dev.yml 2. 初始化数据库 mongoDB脚本:doc/mongoDB.sql MySQL脚本:doc/stock.sql 2.2 启动程序 1. 执行 src/test/java/com/aposs/box/spider/domain/stock/StockTest.java 的 runStockInfoSpiderTest 方法,即可爬取A股所有股票清单 2. 从com.aposs.box.spider.BoxSpiderApplication类启动项目,即可启动服务定时爬取A股行情 2.3 爬取股票数据说明 2.3.1 初始化 tbl_stock_info 表 开始爬取股票k线数据前,需要确认tbl_stock_info表有数据,因为程序是依赖此表中的股票数据执行爬取任务的; 初始化或更新 tbl_stock_info 表的数据入口为: > com.aposs.box.spider.service.StockSpiderService.runStockInfoSpider 也可以选择执行 doc/tbl_stock_info.sql 脚本初始化 tbl_stock_info 表数据,但是可能漏掉新股 2.3.2 爬取A股所有股票250日行情 以下方法为爬取入口为,传入参数 250 即可开始爬取所有股票250日行情 > com.aposs.box.spider.service.StockSpiderService.runKlineSpider(java.lang.Integer) 2.4 通用爬虫(包括各种赛事、新闻爬取) 1. 初始化爬虫元数据表 tbl_spider_mate_data(数据库脚本:doc/tbl_spider_mate_data.sql) 2. 启动项目即可自动爬取相关数据到mongoDB对应的集合中(集合名称为{spider_name})
在原有的基础上做了修改 增加了swagger 修改兼容了es6.x以上版本(因为6.x不允许多种type创建) 后续继续增加功能 更详细的使用过程: 1.安装elasticsearch服务,安装es-ik插件(直接拷贝到plugin/ik目录下),安装es-head插件(需要安装nodejs,npm install后使用grunt server启动),启动es,启动es-head 2.安装mysql服务,(初始化mysqld --initialize 配置端口)启动mysql 然后修改密码, 再使用./mysql -uroot -ppassowrd登陆执行.sql文件中的sql语句创建表和默认数据 3.启动web工程里App.java springboot启动成功 4.访问localhost:8080/index.html 用数据库中的用户名密码登陆 创建问题和答案,实现客服问答 5.访问localhost:8080/swagger-ui.html 查看所有接口,直接调用接口测试 !!!attention!!! 启动es和mysql需要新建用户 useradd snow 然后su snow 用新用户启动服务 es需要设置虚拟缓存 ulimit -v unlimited ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
*爬虫模块环境准备:** + JDK 1.8+ + maven 4.0.0+ + webmagic 0.7.3+ + ansj_seg 5.1.1+ + springboot 1.5.7+ + mybatis 1.3.1+ + mysql 5.1.21+ **运行爬虫:** 以爬取虎扑步行街的帖子、用户和评论为例。 1. 初始化数据库 在本地MySQL中创建自己的schema,执行初始化数据库的脚本 [`hupu-spider/src/main/resources/db.sql`](https://github.com/CrowHawk/MagicToe/blob/master/hupu-spider/src/main/resources/db.sql) ,并根据自己的数据库信息修改配置文件 [`hupu-spider/src/main/resources/application.yml`](https://github.com/CrowHawk/MagicToe/blob/master/hupu-spider/src/main/resources/application.yml) 中的数据源信息。 2. 启动爬虫 hupuspider通过URL请求的方式运行,在浏览器中键入 **localhost:8080/**(默认端口为8080,如果遇到端口冲突,可以在配置文件 [`hupu-spider/src/main/resources/application.yml`](https://github.com/CrowHawk/MagicToe/blob/master/hupu-spider/src/main/resources/application.yml) 中修改端口),爬虫即可开始运行了。 3. 运行数据可视化模块 将数据爬取到数据库中后,直接在Tomcat中运行 ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
Spring Boot项目中,初始化JdbcTemplate对象也非常简单。Spring Boot提供了自动配置的特性,可以根据项目的依赖和配置文件自动初始化JdbcTemplate对象。 以下是在Spring Boot项目初始化JdbcTemplate对象的步骤: 1. 确保你的项目中已经引入了Spring Boot JDBC的依赖。在`pom.xml`文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> ``` 2. 在`application.properties`或`application.yml`配置文件中配置数据库连接信息,包括URL、用户名和密码。 ```properties spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase spring.datasource.username=username spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.jdbc.Driver ``` 3. 在需要使用JdbcTemplate的地方,通过构造函数或依赖注入的方式注入JdbcTemplate对象。例如,在DAO类中使用JdbcTemplate对象: ```java import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; @Repository public class MyDAO { private final JdbcTemplate jdbcTemplate; public MyDAO(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } // 使用jdbcTemplate执行数据库操作 } ``` 4. 现在,JdbcTemplate对象已经初始化并可以在需要的地方进行使用。你可以在DAO类中使用`jdbcTemplate`对象执行各种数据库操作,例如执行SQL语句、查询数据等。 通过以上步骤,Spring Boot会根据配置文件中的数据库信息自动初始化JdbcTemplate对象,并将其注入到需要使用的地方。你可以在项目中的任何地方使用`jdbcTemplate`对象进行数据库操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值