那年没学懂的(java web)批量删除

那年没学懂的(java web)批量删除

下面进入正题,我们来以12306的这个管理员页面为例,
第一步:
第一步:一般我们需要通过id来删除信息,所以就通过EL表达式取到数据的id,放到上面,并命名为ids,你也可以把它的id放到这个复选框的后面,方便查看。
在这里插入图片描述
第二步:写form表单,因为我们要通过表单提交来完成删除,注意form表单的范围及它要访问的路径。
在这里插入图片描述
第三步:在servlet中获取ids,调用底层service实现删除功能,这里你也可以加一下判断和处理。
在这里插入图片描述
第四步:关于写删除的几种方法,我们在这里使用的是deleteUserBatch,Batch是一个批量处理数据的方法。
在这里插入图片描述
第五步:dao层的实现,创建一个关于userdao的接口,通过接口来实现。下面的是核心代码。


	@Override
	public boolean deleteUsersBatch(int[] ids) {
		try {
			//1.获取数据库连接
			//conn = DBUtil.getConnection();
			
			//2.获取PreparedStatement对象
			stat = conn.prepareStatement("delete from tab_user where id=?");
			
			//3.绑定变量值----遍历绑定多个id
			for (int id : ids) {
				stat.setInt(1, id);
				
				//-----------addBatch()--------------------1. 添加批处理语句
				stat.addBatch();//delete from tab_user where id=1
							    //delete from tab_user where id=2
								//delete from tab_user where id=3
			}
			
			//4.执行更新--------------executeBatch()-----------------2.执行批处理语句
			int[] results = stat.executeBatch();
			
			//5.处理结果  ① 执行成功 : a) 大于等于 0 的数 ,  b)返回SUCCESS_NO_INFO  ② 执行失败:返回 EXECUTE_FAILED 
			for (int result : results) {
				// ② 执行失败:返回 EXECUTE_FAILED 
				if(result == Statement.EXECUTE_FAILED)
				{
					return false;
				}
			}
			
			return true;
			
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			//6.关闭资源
			DBUtil.close(stat, rs);
		}
		return false;
	}

第六步:service层,创建一个关于userservice的接口,方便调用与后期处理,接口的好处我就不说了。这里用了事务管理。

@Override
	public boolean deleteUsersBatch(int[] ids) {
		Connection conn = null;
		try{
			conn = DBUtil.getConnection();
			DBUtil.beginTransaction(conn);       //1.关闭自动提交功能----------------------
			
			//--------------------代码核心区域     ------   start----------------------------------
			//① 删除用户信息
			IUserDao userDao = new UserDaoImpl(conn);
			boolean result = userDao.deleteUsersBatch(ids);
			System.out.println("用户[" + Arrays.toString(ids) + "]删除结果:" + result);
			
			if(result)
			{
				DBUtil.commitTransaction(conn);  //2.如果操作成功,提交事务-------------------
				System.out.println("操作成功,提交事务------------------------------");
				return true;
			}
			else
			{
				DBUtil.rollbackTransaction(conn);//3.1 如果操作失败,回滚事务------------------
				System.out.println("操作失败,提交事务------------------------------");
			}
		}
		catch(Exception e)
		{
			DBUtil.rollbackTransaction(conn);   //3.2 如果操作发生异常,回滚事务-----------------
			System.out.println("操作发生异常,提交事务------------------------------");
		} finally {
			//4.关闭连接
			DBUtil.close(conn);
		}
		
		return false;
	}
  • 3
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值