一个批量删除的操作,其它的批量操作可以类似方法做。
上次的批量操作用的是数组接收,改用的List
?
?
用户数据库结构:(用户表users)
Id |
Username |
password |
1 |
aaa |
Bbb |
… |
… |
… |
数据随便添加的
?
VO类:
public class User {
??? private int id;
??? private String username;
??? private String password;
……..???????? //setter、getter方法
?
?
User.hbm.xml:
?
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
??? "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
??? "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="vo">
??? <class name="User" table="user">
?????? <id name="id" column="id">
?????????? <generator class="native"/>
?????? </id>
?????? <property name="username" unique="true" not-null="true" length="16"></property>
?????? <property name="password"></property>
??? </class>
</hibernate-mapping>
?
Action类
?
Public class UserAction extends ActionSupport{
??? public List opids; //需要批量操作的标识,是jsp页面传递过来的数据库主键标识
??? public User user;? //User的引用
??? public UserDAO userdaoimp;?? // 接口统一操作 ,可以只有setter方法,spring注入
???????? ….. //setter? getter方法
??? public String execute() throws Exception {
?????? userdaoimpl.batch_op(opids);
?????? return success;
??? }
}
?
DAO接口:
public interface UserDAO {
??? //批量操作
??? Boolean batch_ops(List list);
}
?
DAOIMPL类
public boolean batch_food(List opids,String op) {
?????? String sql=null;
?????? Boolean b=false;
?????? //因为传递过来的ID以字符串的形式封装的,而我的数据库主键是int类型,所以转类型
?????? List list=new ArrayList();
?????? Iterator it=opids.iterator();
?????? while(it.hasNext()){
?????????? int i = Integer.parseInt((String)it.next());
?????????? list.add(i);
?????? }
?????? if(op.equals("delete")){
?????????? sql="delete from User where id in :opids";
?????? }else{
?????????? //其它操作都行
}
?????? int i = this.getSession().createQuery(sql).setParameterList("opids", list).executeUpdate();
?????? if(i>0)
?????????? b=true;
?????? return b;? }
?
前台用户列表页面代码: 只放出重要的代码哈。。。
?
<form action="batch.action" id="form1">
?<table id="tb" width="100%" border="0" cellspacing="0" cellpadding="0">
??? <tr>
???? <td class="left_title_1"><span id="check_all">全部选取</span></td>
???? <td class="left_title_1"><span id="unckeck_all">取消选</span></td>
???? <td class="left_title_1"><span id="reverse">反选</span></td>
??? ?<td class="left_title_1"><span id="del_check">删除选中</span></td>
???? <td class="left_title_1"> </td>
???? <td class="left_title_1"> </td>
???? </tr>
????????? <tr>
????????? ?? <td class="left_title_1">选择项</td>
??????????? <td class="left_title_1">ID</td>
??????????? <td class="left_title_1">用户名</td>
??????????? <td class="left_title_1">密码</td>
????????? </tr>
<!- 下面的提取数据是从另外一个action跳转过来的,可以直接提取。。。 -à
????????? <s:iterator id="user" value="list">??
????????? <tr>
????????? ?? <td class="left_title_2"><input type="checkbox" name="opids" value='<s:property value="#user.id"/>'/></td>
??????????? <td class="left_title_2"><s:property value="#user.id"/></td>
??????????? <td class="left_title_2"><s:property value="#user.username"/></a></td>
??????????? <td class="left_title_2"><s:property value="#user.password"/></td>
????????? </tr>
????????? </s:iterator>
??????? </table>
?? </form>
该页面用jquery 来实现选取功能:
<script type="text/javascript">
$(function(){
??? $("#check_all").click(function(){
??? ??? //"#shops :checked"之间必须有空格checked是设置选中状态。如果为true则是选中fo否则false为不选中
?????? $(":checkbox").attr("checked",true);
??? });
??? $("#unckeck_all").click(function(){
?????? $(":checkbox").attr("checked",false);
??? });
??? //理解用迭代原理each(function(){}
??? $("#reverse").click(function(){
??? ??? $(":checkbox").each(function(){
?????????? $(this).attr("checked",!$(this).attr("checked"));
?????? });
??? });
??? $("#del_check").click(function(){
?????? $("#form1").submit();
??? });
})
</script>
?
接下来就是Struts.xml:
<action name="batch" class="batch">
?????????? <result name="success" type="redirectAction">
????????????? <param name="actionName">list_user</param>
?????????? </result>
?????? </action>
List_user就是另外一个可以查询用户的action
?
那么接下来就是spring里面的了
<bean name="userdao" class="dao.imp.UserDAOImpl">
??? <property name="sessionFactory" ref="sf"></property>
</bean>
<bean name="batch" class=" action.UserAction">
??? <property name="userdaoimpl" ref="userdao"></property>
</bean>
?
OK,到些结束
其它跟上次的差不多,上次用的是数据接收,这次用的是list接收,如有不到的地方,希望大家指出来,共同学习,谢谢。
?
?
?
?