Mybatis-plus级联删除
时间: 2023-08-07 13:07:49 浏览: 298
mybatis-plus:mybatis-plus练习
Mybatis-plus支持级联删除,具体实现可以参考以下步骤:
1. 在实体类中设置需要级联删除的关联关系,使用注解`@TableField(exist = false)`标注,如下所示:
```java
public class User {
private Long id;
private String name;
@TableField(exist = false)
private List<Order> orders;
}
```
2. 在Mapper接口中定义级联删除的方法,使用注解`@Delete`,同时使用Mybatis-plus提供的`@Param`注解指定参数名称,如下所示:
```java
public interface UserMapper extends BaseMapper<User> {
@Delete("delete from order where user_id = #{userId}")
void deleteOrdersByUserId(@Param("userId") Long userId);
}
```
3. 在Service层调用Mapper接口的级联删除方法,如下所示:
```java
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public boolean removeById(Serializable id) {
User user = getById(id);
List<Order> orders = user.getOrders();
if (orders != null && !orders.isEmpty()) {
userMapper.deleteOrdersByUserId(user.getId());
}
return super.removeById(id);
}
}
```
在删除用户时,先查询用户关联的订单,如果存在订单则调用Mapper接口的级联删除方法删除订单,最后再删除用户。这样就实现了Mybatis-plus的级联删除。
阅读全文