加载中…
个人资料
null
null
  • 博客等级:
  • 博客积分:0
  • 博客访问:3,914
  • 关注人气:27
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

ibatis两种批量删除方法

(2018-02-28 16:24:35)
标签:

ibatis

批量删除

java

分类: 原创

ibatis批量操作网上可以搜到到很多,但大部分都是根据某个id的集合进行批量操作,这样就限制了入参的范围。有时候我们希望根据某些字段联合删除操作,这样根据单个字段的sql就不适合了。下面把这两种批量删除方式都介绍一下,对应不用的应用场景,大家可以根据具体需要选择合适的。


1. 根据id集合批量删除

使用场景:需要批量删除的数据只有其中一列不同,其余判断条件都一致。

比如最简单的根据id批量删除:


Xml代码 

http://s3/mw690/001Ehz5Tzy7iwNDMgme72&690

可以将“ids”参数存放在java map中,如果还有其他参数也可以放入map中一起赋值到sql上,使用map作为parameterClass的话具有一定的扩展性,方便参数或查询条件灵活变更。

通过mysql中的IN语句,可以方便的实现简单场景下的批量删除操作。

 

2. 根据对象集合批量删除

使用场景:需要删除的where条件中有多个组合条件,而且每个记录的参数值都不一样。

比如批量删除用户信息时,需要根据用户姓名和性别这两个参数联合确定的记录,这时候上面根据单一列批量删除的sql就不适用了。需要使用到ibatis的批量操作语句进行sql提交。


Java代码 

1.  protected int executeBatchDelete(final String statementName, final List dataObjectList)  

2.          try  

3.              return getSqlMapClientTemplate().execute(new SqlMapClientCallback()  

4.                  @Override  

5.                  public Integer doInSqlMapClient(SqlMapExecutor executor) throws SQLException  

6.                      int affectCnt 0 

7.                      executor.startBatch();  

8.                      for (Object dataObjectList)  

9.                          executor.delete(getNamespace() statementName, t);  

10.                      

11.                     // 提交剩余的数据  

12.                     affectCnt += executor.executeBatch();  

13.                     return affectCnt;  

14.                  

15.             });  

16.         catch (Exception e)  

17.            //TODO handle exception  

18.          

19.      

 

同时需要在ibatisxml文件中配置如下sql语句:


Xml代码 

http://s5/mw690/001Ehz5Tzy7iwNFcL4gd4&690

这种方式下sql语句比较简单和单一的删除语句相同。

通过上述提供的两种批量删除方法,基本可以满足我们日常开发过程中使用ibatis进行批量删除的应用场景了。如果大家还有其他批量删除方式,也欢迎评论留言一起学习。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有