ibatis批量修改、批量增加、批量删除

本文深入探讨了Ibatis中批量更新、插入与删除操作的实现方式,通过提供的代码示例详细说明了如何使用声明式事务来高效执行这些操作,并特别强调了参数列表的应用。此外,文章还介绍了批量操作方法的调用规范,旨在为开发者提供一种灵活且高效的数据库交互手段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<update id="Update" resultMap="Select" parameterClass="list">
       begin
      <iterate conjunction="">
        update SYS_TABLE set
        Category=#[].Category#,
        Name =#[].Name#,
        Code =#[].Code#,               
        Status =#[].Status#
        where id = #[].Id#;     
      </iterate>
      end;    
    </update>

 1、修改:传入修改对象的List类型

<insert id="Add" resultMap="Select" parameterClass="list">
insert all
<iterate conjunction="">
into SYS_TABLE
(id,Category,Name,Code,Status)
values(#[].Id#,#[].Category#,#[].Name#,
#[].Code#,#[].Status#)
</iterate>
<!--下面这句必须加,不然会提示找不到SELECT-->
select * from dual
</insert>

 2、插入:传入对象的List类型

<delete id="Del" resultMap="Select" parameterClass="list">
      delete      
      from SYS_TABLE
      where id in    
      <iterate conjunction="," open="(" close=")">
        #[]#
      </iterate>
    </delete>

 3、删除:传入ID的List类型

 

4、获取列表跟删除一样,遍历ID的list

 

 

 

Ibatis批量添加修改删除方法

public void batchUpdate( final String statementName, final List list) { 

       try { 

           if (list != null ) { 

              this .getSqlMapClientTemplate().execute( new SqlMapClientCallback() { 

                  public Object doInSqlMapClient(SqlMapExecutor executor) throws SQLException { 

                     executor.startBatch(); 

                     for ( int i = 0, n = list.size(); i < n; i++) { 

                         executor.update(statementName, list.get(i)); 

                     } 

                     executor.executeBatch(); 

                     return null ; 

                  } 

              }); 

           } 

       } catch (Exception e) { 

           if ( log .isDebugEnabled()) { 

              e.printStackTrace(); 

              log .debug( "batchUpdate error: id [" + statementName + "], parameterObject [" + list + "].  Cause: " + e.getMessage()); 

           } 

       } 

 

    } 

    public void batchInsert( final String statementName, final List list) { 

       try { 

           if (list != null ) { 

              this .getSqlMapClientTemplate().execute( new SqlMapClientCallback() { 

                  public Object doInSqlMapClient(SqlMapExecutor executor) throws SQLException { 

                     executor.startBatch(); 

                     for ( int i = 0, n = list.size(); i < n; i++) { 

                         executor.insert(statementName, list.get(i)); 

                     } 

                     executor.executeBatch(); 

                     return null ; 

                  } 

              }); 

           } 

       } catch (Exception e) { 

           if ( log .isDebugEnabled()) { 

              e.printStackTrace(); 

              log .debug( "batchInsert error: id [" + statementName + "], parameterObject [" + list + "].  Cause: " + e.getMessage()); 

           } 

       } 

 

    } 

    public void batchDelete( final String statementName, final List list) { 

       try { 

           if (list != null ) { 

              this .getSqlMapClientTemplate().execute( new SqlMapClientCallback() { 

                  public Object doInSqlMapClient(SqlMapExecutor executor) throws SQLException { 

                     executor.startBatch(); 

                     for ( int i = 0, n = list.size(); i < n; i++) { 

                         executor.delete(statementName, list.get(i)); 

                     } 

                     executor.executeBatch(); 

                     return null ; 

                  } 

              }); 

           } 

       } catch (Exception e) { 

           if ( log .isDebugEnabled()) { 

              e.printStackTrace(); 

              log .debug( "batchDelete error: id [" + statementName + "], parameterObject [" + list + "].  Cause: " + e.getMessage()); 

           } 

       } 

 

    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值