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

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

被折叠的 条评论
为什么被折叠?



