(车站在线售票系统)复选框全选,批量删除,多条件查询操作

一丶复选框全选

当点击最顶上的全选/全不选 checkbox时,下面的一列要跟随着

解决方法:用js

function checkAll(){
        //获取(全选/全不选) 复选框的checked值
		var flag=document.getElementById("ckAll").checked;
		//得到所有复选框元素
		var ids=document.getElementsByName("ids");

		for(var i=0;i<ids.length;i++){
			ids[i].checked=flag;
		}
	}

二丶批量删除

    凡是增删改查唯一的一个数据都是依据主键删除的(这很关键),所以我就把复选框的value值 放主键

<input type="checkbox" name="ids" value="tcno=${t.tcno }&begin=${t.begin}&end=${t.end}&">

js代码先这样写看看效果

function delAllProduct(){
		//得到所有复选框
		var str=""
		var ids=document.getElementsByName("ids");
		
		for(var i=0;i<ids.length;i++){
			if(ids[i].checked==true){
				str+=ids[i].value
				
			}
		}
		str=str.substr(0, str.length-1);
		
		alert(str);
	}

结果:当点击批量删除时,主键的信息全部在上面,就可以实现删除了!

批量删除的实现:点击批量删除,触发delAllproduct事件

function delAllProduct(){
		//得到所有复选框
		var str=""
		var ids=document.getElementsByName("ids");
		
		for(var i=0;i<ids.length;i++){
			if(ids[i].checked==true){
				str+=ids[i].value
				
			}
		}
		str=str.substr(0, str.length-1);
		if(str!="")
		location.href="${pageContext.request.contextPath}/deleteAllTickets?"+str;
		
	}

注意:str==null时就不跳转了,否则数据库查询时会出错

web层 servlet代码


	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		String[] tcno = request.getParameterValues("tcno");
		String[] begin=request.getParameterValues("begin");
		String[] end=request.getParameterValues("end");
		
		TicketService ts=new TicketService();
		ts.deleteAllTickets(tcno,begin,end);
		
		request.getRequestDispatcher("/ticketsList").forward(request, response);
	}

数据库层代码

public void deleteAllTickets(String[] tcno, String[] begin, String[] end) throws SQLException {
		QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
		Object[][] params=new Object[tcno.length][];
		for(int i=0;i<params.length;i++){
			params[i]=new Object[]{tcno[i],begin[i],end[i]};
		}
		qr.batch("delete from tickets where tcno=? and begin=? and end=?", params);
		
		
	}

三,多条件查询

(思路)

起始sql语句 select * from tickets where 1=1   (一定要写这个 where 1=1)

因为条件是不确定的,从提交的条件判断是否为null,sql+=“‘你要的条件’”

最后把我的代码附上,因为我tickets的javabean 附带了一个car的javabean的引用,所以用了自定义结果类型resultSetHandler,代码会稍显多.

public List<Tickets> findTicketByManyCondition(String begin, String end, String concumerType, String maxprice,
			String minprice, String time) throws SQLException {
		// TODO Auto-generated method stub
		QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
		List<Object> list=new ArrayList<Object>();
		String sql="select * from tickets t,car c where c.CNo=t.tcno and 1=1";
		if(!"".equals(begin)){
			sql+=" and begin=?";
			list.add(begin);
			
		}
		if(!"".equals(end)){
			sql+=" and end=?";
			list.add(end);
		}
		if(!"".equals(concumerType)){
			sql+=" and concumerType=?";
			list.add(concumerType);
		}
		if(!"".equals(minprice)){
			sql+=" and tprice>?";
			list.add(minprice);
		}
		if(!"".equals(maxprice)){
			sql+=" and tprice<?";
			list.add(maxprice);
		}
		if(!"".equals(time)){
			sql+=" and beginTime>?";
			list.add(time);
		}
		
		 return qr.query(sql, new ResultSetHandler<List<Tickets>>(){

			@Override
			public List<Tickets> handle(ResultSet rs) throws SQLException {
				
				List<Tickets> list = new ArrayList<Tickets>();
				while(rs.next()){
					Tickets t = new Tickets();
					t.setTcno(rs.getString("tcno"));
					t.setTprice(Double.valueOf(rs.getString("tprice")));
					t.setTnum(Integer.valueOf(rs.getString("tnum")));
					t.setBegin(rs.getString("begin"));
					t.setEnd(rs.getString("end"));
					t.setConcumerType(rs.getString("concumerType"));
					String beginTime = rs.getString("beginTime").substring(0, 19);

					String endTime = rs.getString("endTime").substring(0, 19);

					SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
					try {
						t.setBeginTime(sdf.parse(beginTime));
						t.setEndTime(sdf.parse(endTime));
					} catch (ParseException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}

					Car c = new Car();
					c.setCno(rs.getString("tcno"));
					c.setCtype(rs.getString("Ctype"));
					t.setCar(c);
					list.add(t);
				}
				System.out.println(list.size()+"--------------------");
				return list;
			}
			 
		 },list.toArray());
	}

猜你喜欢

转载自blog.csdn.net/qq_39665334/article/details/82708359