动态SQL之foreach标签(批量删除)
foreach标签的属性
- collection:设置要循环的数组或集合
- item:用一个字符串表示数组或集合中的每一个数据
- separator:设置每次循环的数据之间的分隔符,分隔符前后会自动加空格
- open:循环的所有的内容以什么开始
- close:循环的所有内容以什么结束
DynamicSQLMapper接口
public interface DynamicSQLMapper {
/**
* 批量删除员工信息
* @param empIds
*/
void deleteMoreEmp(@Param("empIds") Integer[] empIds);
}
MyBatis的映射文件DynamicSQLMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.atguigu.mybatis.mapper.DynamicSQLMapper">
<!--void deleteMoreEmp(@Param("empIds") Integer[] empIds);-->
<delete id="deleteMoreEmp">
<!--delete from t_emp where emp_id in
<foreach collection="empIds" item="empId" separator="," open="(" close=")">
#{empId}
</foreach>-->
delete from t_emp where
<foreach collection="empIds" item="empId" separator="or">
emp_id = #{empId}
</foreach>
</delete>
</mapper>
测试
![](https://img-blog.csdnimg.cn/09a52c2464a54d59a95666626d2f9322.png)
public class DynamicMapperTest {
@Test
public void testDeleteMoreEmp(){
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
DynamicSQLMapper mapper = sqlSession.getMapper(DynamicSQLMapper.class);
Integer[] empIds = new Integer[]{4,5,6,7};
mapper.deleteMoreEmp(empIds);
}
}
![](https://img-blog.csdnimg.cn/308071c4f5334b11954ac10a92e2f3ea.png)
![](https://img-blog.csdnimg.cn/a6850c8c578440939e2631bb9744fba5.png)