Springboot 调用mysql的.sql文件,执行mysql语句

前言

该篇内容介绍是 调用指定的 .sql 文件, 执行里面的mysql语句。

 

正文 

 

实战示例准备:

1. 一张 user 表 :


 

2.2个简单 SQL文件(里面就简单写点插入sql语句):

sql文件在项目中的位置:

 

3.pom.xml 依赖:

        <!--web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- mybatis依赖 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.0</version>
        </dependency>
        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!-- druid数据源驱动 1.1.10解决springboot从1.0——2.0版本问题-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>

4.application.yml 配置:
 

server:
  port: 8082
spring:
  datasource:
    druid:
      url: jdbc:mysql://127.0.0.1:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=true&rewriteBatchedStatements=true
      username: root
      password: 123456
      initialSize: 5
      minIdle: 5
      maxActive: 20
      maxWait: 60000
      timeBetweenEvictionRunsMillis: 60000
      minEvictableIdleTimeMillis: 300000
      validationQuery: SELECT 1 FROM DUAL
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      poolPreparedStatements: true
      maxPoolPreparedStatementPerConnectionSize: 20
      useGlobalDataSourceStat: true
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

5. 新建一个工具类ExecuteSQLUtil.java :

可以看到我的有关mysql连接信息在示例里面是从yml文件读取的或者是在代码写死,这个大家根据具体业务场景和项目去调整,甚至放在数据库里面查询也行。

import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.support.EncodedResource;
import org.springframework.jdbc.datasource.init.ScriptUtils;
import org.springframework.stereotype.Component;
import java.sql.*;

/**
 * @Author: JCccc
 * @Description:
 * @Date: 2020/11/16
 */
@Component
public class ExecuteSQLUtil {

    @Value("${spring.datasource.druid.url}")
    private String DB_URL;
    @Value("${spring.datasource.druid.username}")
    private String DB_USERNAME;
    @Value("${spring.datasource.druid.password}")
    private String DB_PWD;

    public  Connection executeSql(String sqlFileName){
        Connection connection = null;
        try {
            String driverClassName = "com.mysql.cj.jdbc.Driver";
//            String DB_URL = "jdbc:mysql://127.0.0.1:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=true&rewriteBatchedStatements=true";
//            String DB_USERNAME = "root";
//            String DB_PWD = "123456";

            Class.forName(driverClassName);
             connection = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PWD);
        } catch (Exception e) {
            e.printStackTrace();
        }
        ClassPathResource rc = new ClassPathResource(sqlFileName);
        EncodedResource er = new EncodedResource(rc, "utf-8");
        ScriptUtils.executeSqlScript(connection, er);
        return connection;
    }


}

6. 写个测试接口,使用postman调用一下:

/**
 * @Author: JCccc
 * @Description:
 * @Date: 2020/11/16
 */
@RestController
public class TestController {

    @Autowired
    ExecuteSQLUtil executeSQLUtil;

    @GetMapping("/executeMysql")
    public String executeMysql(@RequestParam("scriptName") String scriptName) {

        executeSQLUtil.executeSql("static/"+scriptName+".sql");

        return "ok";
    }


}

 

测试:

运行结果:

 

好的该篇内容就到这吧。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小目标青年

对你有帮助的话,谢谢你的打赏。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值