防忘
mapper接口
/**
* 批量删除(逻辑删除)
* @param ids
* @return
*/
int delete(List<String> ids);
/**
* 批量删除(数据删除)
* @param ids
* @return
*/
int delete1(List<String> ids);
mapper.xml
<update id="delete" parameterType="java.util.List">
update a left join b
on a.id = b.a_id
set a.is_delete = 1 , b.is_delete = 1
//注意为 in 而不是 =
where a.id in
<foreach collection="list" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</update>
//如果是一次删除多表数据from前一定要添加表名或表别名,单表不需要加
<delete id = "delete1" parameterType = "java.util.List">
delete a,b
from A a left join B b on a.id = b.a_id
where a.id in
<foreach collection="list" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</detete>
为了保存数据,所以删除一般都是逻辑删除,很少会真正删除数据。
in关键字:表示一个结果集,在结果集内的值都会拿来判断,从而达到批量修改数据的目的。
foreach标签中的属性解释:
1.collection:循环值的类型,一般和parameterType 填写一样的类型
2.item:循环使用的临时变量名(可以随便填)
3.open:整个循环开始前需要添加的sql语句(一般为’ ( ’ 之类的 )
4.close:整个循环结束后需要添加的sql语句(一般为’ ) ’ 之类的 )
5.separator:本次循环结束添加的sql语句,最后一次不会添加(一般为’ , ')