部分已验证,稍后完善
1、插入
(1)第一种方式:利用标签,将入参的list集合通过UNION ALL生成虚拟数据,从而实现批量插入
select seq_LA_T_CONTACT_RECORD.nextval as id from dual
insert into la_t_contact_record
(
id,
contract_id,
contacter_add_name,
contacter_add_type,
contact_add_phone,
contact_add_home_address,
contact_add_work,
contact_add_work_address,
create_by,
create_time ,
modify_by,
modify_time,
validate_state,
sys_source,
isquery
)
select seq_LA_T_CONTACT_RECORD.NEXTVAL,A.* from(
select
#{dto.contractId,jdbcType=VARCHAR}
,#{dto.contacterAddName,jdbcType=VARCHAR}
,#{dto.contacterAddType,jdbcType=VARCHAR}
,#{dto.contactAddPhone,jdbcType=VARCHAR}
,#{dto.contactAddHomeAddress,jdbcType=VARCHAR}
,#{dto.contactAddWork,jdbcType=VARCHAR}
,#{dto.contactAddWorkAddress,jdbcType=VARCHAR}
,#{dto.createBy,jdbcType=DECIMAL}
,systimestamp
,#{dto.modifyBy,jdbcType=DECIMAL}
,#{dto.modifyTime,jdbcType=TIMESTAMP}
,'1'
,#{dto.sysSource,jdbcType=VARCHAR}
,#{dto.isquery,jdbcType=VARCHAR}
from dual
) A
注意:入参必须是list集合,sql语句中没有values;
(2)第二种方式:利用存储过程实现批量插入
begin
insert into lb_t_plan_repayment_otherfee
(
id,
key,
value,
term ,
contract_id,
PAY_ORDER,
FEE_NAME,
INTO_ID
)
values(SEQ_LB_T_PLAN_REPAY_OTHERFEE.nextval
,#{item.key,jdbcType=VARCHAR}
,#{item.value,jdbcType=VARCHAR}
,#{item.term,jdbcType=DECIMAL}
,#{item.contractId,jdbcType=VARCHAR}
,#{item.payOrder,jdbcType=DECIMAL}
,#{item.feeName,jdbcType=VARCHAR}
,#{item.intoId,jdbcType=VARCHAR}
);
end;
注意:入参仍然是list集合,sql中有values,本质是利用存储过程实现批量插入;
2、更新
(1)第一种方式:同样是利用存储过程
UPDATE USERINFO T
T.USERID = #{userlist.userid,jdbcType=VARCHAR},
T.USERNAME = #{userlist.username,jdbcType=VARCHAR},
WHERE
T.USERID = #{userlist.userid,jdbcType=VARCHAR}
(2)第二种方式:利用条件实现
update la_t_advfinished t1
set t1.list_stat='07',
t1.modify_time =systimestamp
where t1.id in('${id}' )
注意:同样可以使用or的条件实现,类似于下面删除的sql;
3、删除
与更新第二种方式类似
delete from ATTRACTIONS
id=#{item.id}