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的书写。