public String delete() {
if (null != this.id) { this.employeeManager.deleteEmployee(this.id); } else { if (ids.length > 0) { for (Long id : ids) { this.employeeManager.deleteEmployee(id); } } } if (this.employeeManager.listEmployee().size() > 0) { return SUCCESS; } else { return INPUT; } } 3、列表页面:list.jsp http://blog.csdn.net/cai5/article/details/6565523 查看以上内容 |
|
5分 |
获取到的ID数组,循环删除不就好了。
|
10分 |
给你一个思路:
jsp页面 <script> function actions() { var d=0; for(var i=0;i <document.myForm.elements.length;i++) { var e=document.myForm.elements[i]; if(e.type==""checkbox""&& e.checked) { d=1; break; } } if(d==0) { alert("没有选择"); }else { if(confirm("您确定要删除这些记录吗?")){ document.myForm.submit(); } } } </script> <form action="delNewsBatch.action" name="myForm" method="post"> <a href="javascript:actions()"> 批量删除</a> <input type="checkbox" name="id" value="<%=list.get(i).getId() %>"> </form> /** * 请求delNewsBatch处理函数 ,批量删除新闻 * @return * @throws Exception */ public String delNewsBatch() throws Exception{ String[] arr =(String [])ActionContext.getContext().getParameters().get("id"); if(arr!=null){ int[] arrId = new int[arr.length]; for (int i = 0; i < arr.length; i++) { arrId[i] = Integer.parseInt(arr[i]); } newsService.delNews(arrId); } return SUCCESS; } spring和hibernat我就不写了,传入参数是一个数组,循环删除就ok了,没什么难度了。 |
for循环吧 hibernate是不是有批量操作的方法
|
|
不知道后台你的数组中有值没有? 有值的话你确定拼接成1,2,3,4不是1,2,3,4,?
|
|
request.getReusetValues没用过,它也可以获得值?
|
|
取得ID列表后,循环删除挺好的嘛
|
|
daoImpl:
jsp: 在action里面就是获取不到页面传来的ids,不知道哪里出了毛病 |
|
5分 |
有个简单的办法。
1:在Bean中多加一个属性.Integer [] ids; 2:页面中 <input type=”checkbox” name=”bean.ids” value=”${bean.id}”/> 3:action中有bean的成员变量,会自动获得你页面上选中的复选框,封装到ids的数组中 4:把数组编程字符串 str =“1,2,3” 5:delete ….. where id in (str). |
求ssh框架下的功能源码。。。
|
|
hibernate写下呗。。万分感谢 |
|
10分 |
spring的service类的方法
public void delNews(int[] arrId) { newsDao.delNews(arrId); } hibernate的dao类方法 /** * 根据新闻id,批量删除新闻 * @param id */ public void delNews(int[] id) { for (int i = 0; i < id.length; i++) { int newsid = id[i]; News news=getHibernateTemplate() .get(News.class , newsid); if(news!=null) getHibernateTemplate().delete(news);} } } 代码写的有点乱,马上要放假回家了,自己随便写的几句,你凑合着看把。主要看思路 |
万分感谢。我看看,再试试 |
|
需要循环吗?循环那不是要执行N条SQL呀?执行效率很低的,就一条语句就行了,WHERE ID IN(…)就行了 |
|
建议使用JDBC的批量删除的类
|
|
有个问题没明白。怎么在action里获取由jsp传来的值。
jsp:<input type=”checkbox” name=”ids” value=”${article.id}”> action:public String del() { HttpServletRequest quest = ServletActionContext.getRequest(); String[] str = request.getParameterValues(ids); System.out.println(str); } 这样写的话,想在action输出ids的值,运行之后页面报错:java.util.Hashtable.get(Hashtable.java:334) |
|
10分 |
页面的checkbox的name 你定义好 在action 定义同样的变量名数组来获取生成setter getter 例如: action中: service: dao: sb.append(ids[i]); getHibernateTemplate().bulkUpdate(“delete from”+反射得到的表名+ “where id in (“+sb.toString()+”)”); |
你的ID是varchar2类型还是number类型,是varchar2类型的话会报错的吧,还有获得的字符串最后一个会不会有个逗号没删去
|
|
session.connection()得到连接直接删除啊
|
|
org.springframework.orm.hibernate3.HibernateQueryException: unexpected char: “”@”” [delete from com.pojo.TArticle01 where id in([I@12c7d13)]; nested exception is org.hibernate.QueryException: unexpected char: “”@”” [delete from com.pojo.TArticle01 where id in([I@12c7d13)] 用您这个方法写的报这个错、。好像是要数据类型转换?具体怎么解决 |
|
在
action里输出ids的值为[I@12c7d13 |
|
你这是把数组传递过去了,拆分出来。 |
|
这位大哥,能否加您个联系方式?qq |
|
public void delAll(int[] ids) { StringBuffer sb = new StringBuffer(); } |
|
….. public void delAll(int[] ids) { StringBuffer sb = new StringBuffer(); for(int i=0;i<ids.length;i++) { if(i!=ids.length-1) { sb.append(","); } sb.append(ids[i]); } String sql = "delete from TArticle01 where id in("+sb.toString()+")"; getHibernateTemplate().bulkUpdate(sql ); System.out.println("执行的sql为:"+sql ); } |
|
Hibernate: delete from comp.dbo.t_ARTICLE_01 where ID in (0) |
|
1:在Bean中多加一个属性.Integer [] ids;
2:页面中 <input type=”checkbox” name=”bean.ids” value=”${bean.id}”/> 3:action中有bean的成员变量,会自动获得你页面上选中的复选框,封装到ids的数组中 4:把数组编程字符串 str =“1,2,3” public void delAll(int[] ids) { String str =null; for(int i=0;i<ids.length;i++) { if(i!=ids.length-1){ str+=”,”; } str+=ids[i].toString(); } String sql = “delete from TArticle01 where id in(“+str+”)”; getHibernateTemplate().bulkUpdate(sql ); System.out.println(“执行的sql为:”+sql ); } 借用了xiaozhongmiaoyun 和sd4000784 的思路。 |
|
是maosijunzi 的,不是xiaozhongmiaoyun的思路哈
|