关闭

java批量删除

标签: java批量删除
2386人阅读 评论(7) 收藏 举报
分类:
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的内部流程有了较深的认识。很值得点赞!!!

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:188193次
    • 积分:6172
    • 等级:
    • 排名:第4250名
    • 原创:138篇
    • 转载:6篇
    • 译文:0篇
    • 评论:1681条
    博客专栏
    最新评论