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());
}
/**
* 把数组转换成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(",", "','");
遍历数组之后要加上一个替换符号才行