IBatis批量处理那些事

来源:互联网 发布:2017网络红歌在线试听 编辑:程序博客网 时间:2024/06/08 04:23

IBatis批量处理之Sql样例

批量更新:

<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>

批量删除:

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

批量插入:

<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>

注释一定要注意!select * from dual 这句必须加

IBatis批量处理之Java样例

总体思路都一样,一条的执行,批量提交

批量更新

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 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());            }        }     }

批量插入

   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());            }        }     } 

Merge into的用法 – 待完善

0 0
原创粉丝点击