ssm框架逻辑删除mysql_ssm框架mybatis批量删除数据示例详解

在ssm框架的项目中,我们做mybatis批量删除数据的时候,要尽量避免在service层使用for循环来批量删除数据,如下是这种for循环批量情况(如UserServiceImpl实现类)。@Transactional

public int batchDeleteUser(int[] ids) {

try {

for(Long userId:ids){

//一条一条的删除

userMapper.deleteByPrimaryKey(userId);

}

} catch (Exception e) {

//批量删除事务回滚

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

return -1;

}

return 1;

}

为什么要用mybatis批量删除数据而不使用for循环来单个删除数据呢?这是因为每次for循环操作数据库都要开启一次事务,严重的影响了数据库的操作性能,于是我们就可以直接在mybatis mapper配置文件中使用mybatis批量删除的方法,可以有效的提高mysql操作性能。

我们把UserServiceImpl类经过改造之后,变成如下这样,去掉了for循环。@Transactional

public int batchDeleteUser(int[] ids) {

try{

//批量删除

userMapper.deleteAll(ids);

}catch (Exception e){

//批量删除事务回滚

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

return -1;

}

return 1;

}

这个时候UserMapper.java里面的接口方法是这样的,表示批量删除数据,如下。//id存储在了Array数组中了

void deleteAll(int[] ids);

//假如id存储在List集合中

//void deleteAll(List);

在UserMapper.xml文件中,我们就可以通过foreach来遍历我们的ids数组,然后进行删除,这样就不会每次for循环的时候开启数据库连接了。

delete from USER u where u.ID in

#{id}

注释说明:

UserMapper.xml中的collection属性:当collection=“array”时,表名参数为数组

当collection=“list”时,表名参数为集合

item="id":

表示ids数组中的每一个元素,#{id}表示取这个数组的每一个元素值

USER:

表示user用户表

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/javaweb/384.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值