批量刪除

批量刪除是我們在實踐項目中很常見的一個知識點,批量刪除中都會和前臺頁面的循環選擇相關聯,如下面的圖片顯示:

頁面selectFlags循環選擇

這是前臺頁面中的javascript循環選擇的代碼:

function modifyUser() {
//獲得頁面 name爲selectFlag的複選框的ID
var selectFlags  = document.getElementsByName("selectFlag");
var count = 0;
var j = 0;
for (var i=0; i<selectFlags.length; i++) {
if (selectFlags[i].checked) {
//將選中的selectFlags(用戶)的ID值賦給變量j
j = i;
count++;
}
}
if (count == 0) {
alert("請選擇需要修改的用戶!");
return;
}
if (count > 1) {
alert("一次只能修改一個用戶!");
return;
}
//傳遞要修改的用戶id
window.self.location = "user_modify.jsp?userId=" + selectFlags[j].value;
}

 

下面的代碼是通過前臺提交的selectflags到jsp中循環刪除,這樣的刪除效率較低

<%

 
   String command=request.getParameter("command");

   if("del".equals(command)){

  
      //循環刪除

       for(int i=0;i<userIds.length;i++){
        UserManager.getInstance().delUser(userIds[i]);
     }     
      
   }

%> 

下面的代碼是jsp中的批量刪除

<%
  
   
   String command=request.getParameter("command");
   if("del".equals(command)){
     
    String[] userIds=request.getParameterValues("selectFlag");
       //批量刪除
    UserManager.getInstance().delUser(userIds);
   
   }
%>


 

下面的代碼是D層sql語句的批量刪除代碼

	/**
	 * 批量刪除用戶
	 * 
	 * 採用一條語句完成刪除
	 * 只提交一次
	 * 
	 * 採用PreparedStatement佔位符方式
	 * 
	 * delete from t_user where user_id in (?, ?, ?)
	 * @param userIds
	 */
	public void delUser(String[] userIds) {
		StringBuilder sbStr = new StringBuilder();
		
		//拼SQL語句中的佔位符的‘,’和‘?’
		for (int i=0; i<userIds.length; i++) {
			sbStr.append("?");
			if (i < (userIds.length - 1)) {
				sbStr.append(",");
			}
		}
		//SQL語句連接
		String sql = "delete from t_user where user_id in (" + sbStr.toString()  +  ")";
		Connection conn = null;
		PreparedStatement pstmt = null;
		try {
			conn = DbUtil.getConnection();
			pstmt = conn.prepareStatement(sql);
			
			//爲pstmt賦參
			for (int i=0; i<userIds.length; i++) {
				pstmt.setString(i + 1, userIds[i]);
			}
			pstmt.executeUpdate();
		}catch(SQLException e) {
			e.printStackTrace();
		}finally {
			DbUtil.close(pstmt);
			DbUtil.close(conn);
		}
	}	

總結:關於批量刪除是一個很常見的知識點,而批量刪除的關鍵點就在於sql語句的拼接,上面的代碼註釋的很清楚,總結成博客積澱下來。

發佈了94 篇原創文章 · 獲贊 166 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章