当前位置: 代码迷 >> Web前端 >> SSH2干的一个批量操作用-List
  详细解决方案

SSH2干的一个批量操作用-List

热度:495   发布时间:2012-11-23 00:03:43.0
SSH2做的一个批量操作用--List

一个批量删除的操作,其它的批量操作可以类似方法做。

上次的批量操作用的是数组接收,改用的List

?

?

用户数据库结构:(用户表users

Id

Username

password

1

aaa

Bbb

数据随便添加的

?

VO类:

public class User {

??? private int id;

??? private String username;

??? private String password;

……..???????? //settergetter方法

?

?

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">&nbsp;</td>

???? <td class="left_title_1">&nbsp;</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);

??? });

??? //理解用迭代原理eachfunction(){}

??? $("#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接收,如有不到的地方,希望大家指出来,共同学习,谢谢。

?

?

?

?

  相关解决方案