溫馨提示×

mybatis外鍵的級聯操作設置

小樊
134
2024-09-11 09:19:34
欄目: 編程語言

在 MyBatis 中,實現外鍵的級聯操作需要在映射文件(mapper.xml)中編寫相應的 SQL 語句。以下是一個簡單的例子,展示了如何在 MyBatis 中設置外鍵級聯操作。

假設我們有兩個表:userorder,其中 order 表有一個外鍵 user_id 指向 user 表的主鍵。我們希望在刪除用戶時,同時刪除該用戶的所有訂單。

首先,在 UserMapper.xml 文件中編寫刪除用戶的 SQL 語句:

<mapper namespace="com.example.mapper.UserMapper">
    <!-- 刪除用戶 -->
   <delete id="deleteUser" parameterType="int">
        DELETE FROM user WHERE id = #{userId}
    </delete>
</mapper>

接下來,在 OrderMapper.xml 文件中編寫刪除訂單的 SQL 語句:

<mapper namespace="com.example.mapper.OrderMapper">
    <!-- 刪除訂單 -->
   <delete id="deleteOrdersByUserId" parameterType="int">
        DELETE FROM order WHERE user_id = #{userId}
    </delete>
</mapper>

然后,在 UserService 類中實現級聯刪除操作:

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    @Autowired
    private OrderMapper orderMapper;

    @Transactional
    public void deleteUserCascade(int userId) {
        // 先刪除用戶的訂單
        orderMapper.deleteOrdersByUserId(userId);

        // 再刪除用戶
        userMapper.deleteUser(userId);
    }
}

在這個例子中,我們使用了 Spring 的 @Transactional 注解來確保級聯刪除操作的原子性。當刪除用戶的訂單和刪除用戶這兩個操作都成功執行時,事務才會提交;否則,事務將回滾,保證數據的一致性。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女