在JdbcTemplate中处理数据库事务,可以通过以下步骤进行:
- 添加Maven依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
- 定义数据源和JdbcTemplate:
@Bean
public DataSource dataSource() {
return new DriverManagerDataSource(url, username, password);
}
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
- 编写事务方法:
@Repository
public class UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
@Transactional
public void insertUser(User user) {
jdbcTemplate.update("INSERT INTO user (name, age) VALUES (?, ?)",
user.getName(), user.getAge());
// 出现运行时异常会回滚
int i = 1 / 0;
}
}
- 使用
@Transactional
注解标注事务方法。 - 如果方法执行成功,事务提交;如果出现运行时异常,事务回滚。
4. 在Service层调用:
@Service
public class UserService {
@Autowired
private UserDao userDao;
public void saveUser(User user) {
userDao.insertUser(user);
}
}
- 在Controller层接收请求并调用:
@RestController
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/saveUser")
public void saveUser(@RequestBody User user) {
userService.saveUser(user);
}
}
调用/saveUser
接口时,由于方法内部出现异常,事务会回滚,数据库不会插入记录。