在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引擎 否則可能無法體現事務性