Oracle + Mybatis实现批量插入、更新和删除示例代码

部分已验证,稍后完善

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}
 
 
 

你可能感兴趣的:(Oracle + Mybatis实现批量插入、更新和删除示例代码)