关于批量处理问题

来源:互联网 发布:电信网络新型诈骗 编辑:程序博客网 时间:2024/05/22 14:44

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(",", "','");

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


原创粉丝点击