Springboot触发器实现mysql数据库的创建及表的增删改查
时间: 2024-05-04 10:21:11 浏览: 180
Spring Boot提供了许多与数据库交互的工具和库,包括使用JdbcTemplate或Hibernate等ORM框架。
要实现MySQL数据库的创建及表的增删改查,可以使用以下步骤:
1. 在application.properties或application.yml文件中配置数据库连接信息,例如:
```
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
```
2. 创建数据库及表的SQL语句,并将其存储在resources目录下的sql文件中,例如:
```
CREATE DATABASE IF NOT EXISTS test;
USE test;
CREATE TABLE IF NOT EXISTS user (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT(11) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
3. 创建触发器类并使用@PostConstruct注解,在应用启动时执行SQL语句,例如:
```
@Component
public class DatabaseInitializer {
@Autowired
private JdbcTemplate jdbcTemplate;
@PostConstruct
public void init() {
// 执行SQL语句
jdbcTemplate.execute(getSql("classpath:db-init.sql"));
}
private String getSql(String path) {
InputStream inputStream = null;
try {
inputStream = this.getClass().getClassLoader().getResourceAsStream(path);
return IOUtils.toString(inputStream, "UTF-8");
} catch (IOException e) {
throw new RuntimeException("读取SQL脚本文件出错:" + path);
} finally {
IOUtils.closeQuietly(inputStream);
}
}
}
```
4. 在控制器类中使用JdbcTemplate或Hibernate等ORM框架进行表的增删改查操作,例如:
```
@RestController
public class UserController {
@Autowired
private JdbcTemplate jdbcTemplate;
@GetMapping("/users")
public List<User> getUsers() {
return jdbcTemplate.query("SELECT * FROM user", (rs, rowNum) -> new User(rs.getInt("id"), rs.getString("name"), rs.getInt("age")));
}
@PostMapping("/users")
public void addUser(@RequestBody User user) {
jdbcTemplate.update("INSERT INTO user(name, age) VALUES (?, ?)", user.getName(), user.getAge());
}
@PutMapping("/users/{id}")
public void updateUser(@PathVariable("id") int id, @RequestBody User user) {
jdbcTemplate.update("UPDATE user SET name = ?, age = ? WHERE id = ?", user.getName(), user.getAge(), id);
}
@DeleteMapping("/users/{id}")
public void deleteUser(@PathVariable("id") int id) {
jdbcTemplate.update("DELETE FROM user WHERE id = ?", id);
}
}
```
以上是基于Spring Boot和JdbcTemplate实现MySQL数据库的创建及表的增删改查的简单示例,具体实现方式还可以根据实际需求进行调整。
阅读全文