我们在做项目的时候通常会有多选删除的需求,就是比如下面这张图 我们可以选中左边的多个方框,进行多个删除,我之前有这样的需求一般用的是在servlet中循环多次sql,学了mybatis,
我们可以选中左边的多个方框,进行多个删除,我之前有这样的需求一般用的是在servlet中循环多次sql,学了mybatis,我们可以把这些选中的id封装到数组中,在SQL中遍历,需要用到in关键字。
SQL
<delete id="deleteByIds">
delete
from tb_brand
where id in
<foreach collection="ids" item="id" separator="," open="(" close=")">
#{id}
</foreach>
;
</delete>
这里是通过MyBatis的<foreach>标签进行遍历的,非常方便。
删除方法public void deleteByIds() throws IOException {
int[] ids = {10,11,12};
//1.加载mybatis的核心配置文件,获取SqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//2.获取SqlSession对象,用它来执行sql
SqlSession sqlSession = sqlSessionFactory.openSession(true);
//3.获取Mapper接口的代理对象
BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
//4.执行方法
brandMapper.deleteByIds(ids);
//5.释放资源
sqlSession.close();
}
执行后,可以删除数组中id的数据项,简化了SQL的书写。