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层)
在DRP中,是在jsp文件中插入java服务器端代码的方式进行处理的(MVC中的C层)
执行批量删除的代码:(MVC中的M层,包括负责与数据库进行交互)
在DRP中,项目比较古典,由于没有使用hibernate、struts2等,使得项目比较紧凑,层与层之间还有较强的耦合性,代码混乱,逻辑紊乱的情况还是较明显。但正是对工具的泛泛使用,内容中对原理的结束又细致、反复,对servlet的内部流程有了较深的认识。很值得点赞!!!
在学习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的内部流程有了较深的认识。很值得点赞!!!
相关文章推荐
- 解决NDK开发中Eclipse报错“Unresolved inclusion jni.h”的最终方法
- akka---Getting Started Tutorial (Java): First Chapter
- Java 中4字节形式数据转换为float
- Spring Scope讲解
- SpringMVC的四个基本注解annotation(控制层,业务层,持久层) -- @Component、@Repository @Service、@Controller
- 03 给定链表头结点, 依次输出从尾节点到头结点的数据
- springmvc 国际化
- 12月29日-Eclipse的熟悉
- Java Atomic变量
- 2015/12/29 eclipse应用 输出三角形
- java 集合(6) 选择集合类标准 / Map 接口用法
- java中String的特点,字面对象和构造方法的区别
- spring配置文件头文件的说明
- Java自学之路---DotCom
- 12月29日-Java的历史和发展方向
- java字符小结
- Java接口和抽象类有什么区别,什么时候用接口好,什么时候用抽象类好?
- spring,mybatis整合时出现的一个小问题
- 万年历的算法
- Java final以及static用法简单demo