碰到图表中需要
[{name="name1",data=[[月份,数量],[月份,数量]},{name="name2",data=[[月份,数量]]}]
格式的数据。
如是在mybatis框架中可以新建对象,使用<collection></collection>
封装对象。
而hibernate不知能不能有sql直接处理成二维数组的方法,但问题总是要快速解决的,于是乎写了个公共方法,以便使用
//后台查询出[[1,2,"name1"],[2,3,"name2"],[3,4,"name1"]],
//使用这个方法处理成[{name="name1",data=[[1,2],[3,4]]},{name="name2",data=[[2,3]]}]
//便于图表展示根据name选择查看条目
public static List<HashMap<String,Object>> makeData(List<Object[]> list)
{
String groupname = "";
HashMap<String,Object> map = new HashMap<String,Object>();
Object arr[] = new Object[2];
List<Object[]> l = new ArrayList<Object[]>();
List<HashMap<String,Object>> result = new ArrayList<HashMap<String,Object>>();
result=addMonth(result);
for(Object[] o : list){
//新建组并在此组添加数据
if(groupname == "")
{
groupname = o[2].toString();
map.put("name", groupname);
arr[0]= (Integer)o[0];
arr[1] =(BigInteger)o[1];
l.add(arr);
}
//将上一组数据加入result中并新建组在此组添加数据
else if (!groupname.equals(o[2].toString())) {
//将之前数据加入result中
//l.add(arr);
map.put("data", l);
map.put("type","scatter");
result.add(map);
//初始化组==新建组
l = new ArrayList<Object[]>();map= new HashMap<String,Object>();arr = new Object[2];
groupname = o[2].toString();
map.put("name", groupname);
//添加此数据
arr[0]= (Integer)o[0];
arr[1] =(BigInteger)o[1];
l.add(arr);
//如为最后一条数据直接加入result中.0
if(o.equals(list.get(list.size()-1))){
map.put("data", l);
map.put("type","scatter");
result.add(map);
}
}
//往旧组里加数据
else if (groupname.equals(o[2].toString())){
arr = new Object[2];
arr[0]= (Integer)o[0];
arr[1] =(BigInteger)o[1];
l.add(arr);
//如为最后一条数据直接加入result中
if(o.equals(list.get(list.size()-1))){
map.put("data", l);
map.put("type","scatter");
result.add(map);
}
}
}
return result;
}