直接上干货
1,查询
在编写sql中查询多个id所对应的数据的话,一般都用in(1,2,3),在ibatis可以用下面方法实现。
注意:taskId名称最好和参数名称相同。(个人意见)
2,删除
在批量删除中大多数人会用in(1,2,3),大家都知道in中参数最多知道有1000个,这时候我们删除就不能使用这种方法,下面是iBATIS批量删除方法。
delete from fillitems where 1=1 user_id=#list[]#
执行后sql是 delete from fillitems where 1=1 and(user_id=1 or user_id=2 or user_id=3)
3,批量新增
oracle 批量新增sql和其他数据新增的sql写法不一样。下面是orcale数据库:
insert all
into fillitems(fs_id,user_id,exception_item_codes,exception_item_texts,overtime_item_codes,overtime_item_texts)
values (F_GETSEQ(#list[].userId#),#list[].userId#,#list[].exceptionItemCodes#,#list[].exceptionItemTexts#,
#list[].overtimeItemCodes#,#list[].overtimeItemTexts#)
select * from dual
上面需要注意的地方是F_GETSEQ(#list[].userId#) 这是数据库中的一个函数(自己写的),参数是任意唯一标识 ,函数主要是获得批量新增的序列,因为iBATIS中序列只会获得一次所以不能用nextValue,如是主键会报违反唯一约束错误。
这是我在开发中用到的,都可以使用。