关于批量处理问题

1.对于批量下载或者批量处理一些问题

2.sql条件后面要用in来做批量的处理(例:select * form exm_table where id in(' '));

3.最好要传入int类型的数组,string类型的数组可能最后要对传过来的参数进行处理这样会比较麻烦

贴代码:

	String allRows = request.getParameter("content");
	     // 获得所选对象的order_id值得数组
	String[] temp = allRows.split(",");//以空格拆分字符串
	Integer[] obj = new Integer[temp.length];//int类型数组
	for(int i=0;i<temp.length;i++){
		obj[i]=Integer.valueOf(temp[i]);
		}
	List<Map> list =storeOrderManager.getList(obj);

首先getparameter一个string数组,然后我们要对string类型的数组进行处理把他转化成int类型的,然后去调用getlist一个接口。

public List<Map> getList(Integer [] contentArr) {
		String id_str = StringUtil.arrayToString(contentArr, ",");
		String sql = "select o.sn,from_unixtime(o.create_time,'%Y-%m-%d %H:%i:%s') as time,o.status,o.need_pay_money,oi.price,oi.num "
				+ "FROM es_order o LEFT JOIN es_order_items oi "
				+ "ON o.order_id = oi.order_id WHERE o.order_id in (" +id_str+ ")";
		return this.daoSupport.queryForList(sql.toString());
	}


在实现类里面我们还要去对刚刚传过来的int类型的数组进行处理把它转成string,用去调用arrayToString工具类。


/**
	 * 把数组转换成String
	 * 
	 * @param array
	 * @return
	 */
	public static String arrayToString(Object[] array, String split) {
		if (array == null) {
			return "";
		}
		String str = "";
		for (int i = 0; i < array.length; i++) {
			if (i != array.length - 1) {
				str += array[i].toString() + split;
			} else {
				str += array[i].toString();
			}
		}
		return str;
	}

这样批量就可以了,其实这样搞来搞去感觉像智障一样,没办法项目里的人不允许去动自带的工具类。


还有一个接收的参数是string类型的数组:


	@ResponseBody
	@RequestMapping(value = "/export-excel")
	public void exportExcel(HttpServletResponse response) {
		// 创建HSSFWorkbook对象(excel的文档对象)
		HSSFWorkbook wb = new HSSFWorkbook();
		try {
//			HttpSession session = request.getSession();
//			String ordersn =  session.getAttribute("ordersn").toString();
//			HttpServletRequest request = ThreadContextHolder.getHttpRequest();
//			String date = session.getAttribute("date").toString();
//			String type = session.getAttribute("type").toString();
//			String serchKey = session.getAttribute("serchKey").toString();
//			List<Map> memberAccountList = memberAccountManager.memberAccountList(date, type, serchKey);
//			Integer orderId = Integer.valueOf(request.getParameter("order_id"));
			HttpServletRequest request = ThreadContextHolder.getHttpRequest();
			String ordersn =  request.getParameter("ordersn");
			List<String> list = new ArrayList<String>();
			list.add(ordersn);
			List<Map> get = storeOrderManager.getList(list);

调用getlist

public List<Map> getList(List<String> list) {
		String id_str = StringUtil.listToString(list, ",");
		String str =id_str.replace(",", "','");
		String sql = "select o.sn,from_unixtime(o.create_time,'%Y-%m-%d %H:%i:%s') as time,o.status,o.need_pay_money,oi.price,oi.num "
				+ "FROM es_order o LEFT JOIN es_order_items oi "
				+ "ON o.order_id = oi.order_id WHERE o.sn in ('" +str+ "')";
		return this.daoSupport.queryForList(sql.toString());}

同样还是去调用工具类

/**
	 * 将一个list转为以split分隔的string
	 * 
	 * @param list
	 * @param split
	 * @return
	 */
	public static String listToString(List list, String split) {
		if (list == null || list.isEmpty())
			return "";
		StringBuffer sb = new StringBuffer();
		for (Object obj : list) {
			if (sb.length() != 0) {
				sb.append(split);
			}
			sb.append(obj.toString());
		}
		return sb.toString();
	}

注意:在MySQL中string类型的参数必须要加上单引号才行,int类型无所谓所以:

String str =id_str.replace(",", "','");

遍历数组之后要加上一个替换符号才行


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值