springmvc一条插入语句基于事务向两张表插入信息
时间: 2023-08-04 21:38:37 浏览: 155
详解自定义SpringMVC的Http信息转换器的使用
假设我们有两张表:`user`和`address`,其中`user`表有一个外键`address_id`,关联到`address`表的主键`id`。现在我们要向这两张表插入信息,可以使用Spring的事务来保证操作的原子性。
首先,需要在Spring配置文件中配置事务管理器:
```xml
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
```
然后,在需要使用事务的Service方法上添加`@Transactional`注解:
```java
@Service
@Transactional
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Autowired
private AddressDao addressDao;
public void addUser(User user, Address address) {
addressDao.addAddress(address); // 向address表插入信息
user.setAddressId(address.getId()); // 设置user表的外键
userDao.addUser(user); // 向user表插入信息
}
}
```
在`addUser`方法上添加了`@Transactional`注解,表示这个方法需要使用事务。在方法中先向`address`表插入信息,然后获取插入后的主键`id`,并设置到`user`对象的`addressId`属性上,最后向`user`表插入信息。如果在插入过程中出现异常,事务会自动回滚,保证原子性。
阅读全文