jdk7环境下,在spring boot中执行一个SQL文件去MySQL数据库插入数据
时间: 2024-02-28 21:53:56 浏览: 83
在Spring Boot中执行SQL文件向MySQL数据库插入数据,可以使用Spring的JdbcTemplate和ResourceLoader。以下是一个简单的示例:
假设我们有一个名为data.sql的SQL文件,其内容如下:
```
INSERT INTO my_table (id, name) VALUES (1, 'John');
INSERT INTO my_table (id, name) VALUES (2, 'Jane');
```
首先,我们需要创建一个名为DatabaseInitializer的类,该类负责加载并执行SQL文件。以下是一个示例:
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ResourceLoader;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.util.FileCopyUtils;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.nio.charset.StandardCharsets;
@Component
public class DatabaseInitializer {
@Autowired
private JdbcTemplate jdbcTemplate;
@Autowired
private ResourceLoader resourceLoader;
public void init() throws IOException {
String sql = loadSql("data.sql");
jdbcTemplate.execute(sql);
}
private String loadSql(String filename) throws IOException {
Reader reader = new InputStreamReader(resourceLoader.getResource("classpath:" + filename).getInputStream(), StandardCharsets.UTF_8);
return FileCopyUtils.copyToString(reader);
}
}
```
在上面的代码中,我们使用ResourceLoader加载data.sql文件,并使用JdbcTemplate执行SQL语句。
接下来,在Spring Boot应用程序启动时,你可以调用DatabaseInitializer的init()方法来初始化数据库:
```java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
public class MyApp {
public static void main(String[] args) throws IOException {
ConfigurableApplicationContext context = SpringApplication.run(MyApp.class, args);
// 初始化数据库
DatabaseInitializer initializer = context.getBean(DatabaseInitializer.class);
initializer.init();
}
}
```
这样,在Spring Boot启动时,会自动执行init()方法,从data.sql文件中加载SQL语句并向MySQL数据库中插入数据。
阅读全文