在spring中使用@Transactional注解来标志类或者方法为事务,@Transactional注解的函数内容要么全部执行,要么全部不执行。使其具有事务院子原子性
//删除用户
@Transactional //事务注解,代表方法内的操作是一个事务,如果其中一步失败则回滚=======>mysql数据库要用innodb引擎
public int delete(int userId) {
orderMapper.deleteByUserId(userId); //根据用户ID删除订单
userInfoMapper.deleteByUserId(userId); //根据用户ID删除用户信息
userCollectionMapper.deleteByUserId(userId);//根据用户ID删除用户收藏
return userMapper.deleteByPrimaryKey(userId);//根据用户ID删除用户
}
以上代码加了注解,所以删除用户的时候如果正常执行会将删除用户有关的所有数据
如果不加事务注解,则可能在删除了用户,但是用户信息或者用户收藏或订单数据还存在。数据不完整
注:mysql数据库需要innoDB引擎 否则可能无法体现事务性