您的位置:首页 > 编程语言 > Java开发

java批量删除

2015-12-29 20:57 495 查看
java批量删除



在学习DRP项目过程中,视频中使用逐条删除的方式,但考虑到逐条删除在数据量大的情况下,可能性能较低的因素,对其进行了优化升级。采用字符拼接、批量删除。

首先,批量删除的sql语句语法为:delete t_table from id_key in (value1, value2, ……)

sql语句说明:删除t_table表中,id_key主键为value1, value2, ……等数据项。



从jsp的JavaScript中进提交(MVC中的V层)

/**
	 * 删除用户
	 * 		* 批量删除
	 */
	function deleteUser() {
		var userID = new Array();
		var selectFlags = document.getElementsByName("selectFlag");
		var j = 0;
		for(var i=0; i<selectFlags.length; i++) {
			if(selectFlags[i].checked == true) {
				userID[j] = (selectFlags[i].id).toString();
				j++;
			}
		}
		var del = "del";
		window.self.location = "user_maint.jsp?userID[]=" + userID + "&command=" + del;
		
	}


在DRP中,是在jsp文件中插入java服务器端代码的方式进行处理的(MVC中的C层)
<%	
	String [] userId;
	userId = request.getParameterValues("userID[]");
	String command = request.getParameter("command");
	if("del".equals(command)){
		UserManager.getInstance().removeUser(userId);
		out.println("删除用户成功!");
	}
%>


执行批量删除的代码:(MVC中的M层,包括负责与数据库进行交互)

/**
	 * 根据用户ID,删除用户
	 * @param 用户ID:userId
	 * @throws SQLException
	 */
	public void removeUser(String [] userId) throws SQLException{
		
		String aString = null;
		StringBuffer delSql = new StringBuffer();
		
		String userID = userId[0]; 
	    String[] strarray = userID.split(","); 

		// 将需要删除的 用户ID数组 循环装载到 StringBuffer中
		if(strarray.length > 1) {
			delSql.append("delete from t_user where user_id in (" + "'" + strarray[0] +"'");
			for (int i = 1; i < strarray.length; i++) {
				delSql.append(",")
				.append("'")
				.append(strarray[i])
				.append("'")
				.append(")");
			}
		}else {
			delSql.append("delete from t_user where user_id in (" + "'" + strarray[0]+ "'" + ")");
		}
		
		//delSql.append("delete from t_user where user_id in ('a12345','a1234')");    // 拼串示例效果
		
		Connection conn = null;
		PreparedStatement patmt = null;
		try {
			conn = DbUtil.getConnection();
			patmt = conn.prepareStatement(delSql.toString());
			
			patmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			patmt.close();
			conn.close();
		}
	}


在DRP中,项目比较古典,由于没有使用hibernate、struts2等,使得项目比较紧凑,层与层之间还有较强的耦合性,代码混乱,逻辑紊乱的情况还是较明显。但正是对工具的泛泛使用,内容中对原理的结束又细致、反复,对servlet的内部流程有了较深的认识。很值得点赞!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: