mybatis 删除一组数据 in

本文介绍了一种使用MyBatis进行批量删除的方法。通过提供的XML配置示例,展示了如何利用foreach标签来构建动态SQL,实现根据指定的名字列表进行数据库记录的批量删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不能自己ping in中的数据
而是要用其带有的方式


<delete id="deleteV1ByMenName" parameterType="string">
DELETE FROM MEMBER_VERIFY WHERE MEN_NAME in
<foreach collection="deleteString" item="item" open="(" separator=","
close=")">
#{item}
</foreach>
</delete>





int deleteV1ByMenName(@Param("deleteString") String[] deleteString);

### 使用 MyBatis 删除主从表数据的一次性操作 在处理数据库中的主从关系时,通常需要确保删除主记录的同时也删除相应的子记录。为了实现这一目标,在 MyBatis 中可以通过编写级联删除语句来完成此操作。 对于主表和从表之间的关联,可以利用外键约束设置 `ON DELETE CASCADE` 属性[^1]。然而,如果应用程序逻辑不允许依赖于数据库级别的级联删除,则可以在 MyBatis 映射文件中定义事务管理并执行批量删除: #### 方法一:通过 SQL 语句直接指定 ```sql DELETE FROM child_table WHERE parent_id IN (SELECT id FROM parent_table WHERE condition); DELETE FROM parent_table WHERE condition; ``` 这种方法适用于简单的场景,并且可以直接放在 `<script>` 标签内作为动态SQL的一部分。 #### 方法二:使用 XML 配置映射器 创建两个独立的 Mapper 接口方法分别对应父表和子表的操作,并在一个服务层函数里调用它们,同时开启事务支持以保证原子性。 ```java public interface ParentMapper { @Delete("DELETE FROM child_table WHERE parent_id=#{id}") void deleteChildren(@Param("id") int parentId); @Delete("DELETE FROM parent_table WHERE id=#{id}") void deleteParent(@Param("id") int parentId); } ``` 接着,在 Service 类中组合这两个 DAO 调用: ```java @Service public class ParentService { private final ParentMapper mapper; public ParentService(ParentMapper mapper){ this.mapper = mapper; } @Transactional(rollbackFor=Exception.class) public void removeWithChildren(int parentId)throws Exception{ try{ mapper.deleteChildren(parentId); mapper.deleteParent(parentId); }catch(Exception e){ throw new RuntimeException(e.getMessage(),e); } } } ``` 上述代码片段展示了如何配置 MyBatis 来安全有效地移除具有父子关系的数据项。请注意,实际应用中应当根据具体业务需求调整参数传递方式以及异常处理机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值