jsonMap

本文详细阐述了一个Java方法如何实现区域数据的全搜索,并通过参数调整筛选特定条件下的数据。利用数据库操作获取数据,计算汇总值并以JSON格式返回结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Action:

public void searchAllArea() throws ServletException, IOException {
  int level = 0;
  String rep = request.getParameter("treetype");
  String levell=request.getParameter("level");
  String year11=request.getParameter("year");
  int year=2007;
  if(year11!=null && !(year11.equals(""))){
   year=Integer.parseInt(year11);
  }
  if (levell != null && !(levell.equals(""))) {
   level = Integer.parseInt(levell);
  }
  int totalCount=0;
  List<Area> alst;
  if (level == 1) {
   alst = AreaBean.getAreaByWhere(" u.pid=0");
   totalCount = AreaBean.countAreaByWhere("pid=0");
  } else{
   alst = AreaBean.getAreaByWhere("u.pid<>0");
   totalCount = AreaBean.countAreaByWhere("pid<>0");
   
  }
   StringBuffer aid = new StringBuffer();
   for (Area area : alst) {
    aid.append(area.getId());
    aid.append(",");
   }
   aid.deleteCharAt(aid.length() - 1);
   String[] aids = aid.toString().split(",");
   Map<String, Integer> list = new HashMap<String, Integer>();
   int sum;
   int val = 0;
   for (int j = 0; j < totalCount; j++) {
    List<Area> calst = AreaBean.getSAreaByPid(Integer.parseInt(aids[j]));
    if (calst.size() > 0) {
     sum = 0;
     for (Area areat : calst) {
      sum=sum+TreeDataBean.TreeListByArea(year, areat.getId(), rep);
     }
     val = sum;
    } else {
     val=TreeDataBean.TreeListByArea(year, Integer.parseInt(aids[j]), rep);
    }
    list.put((AreaBean.getAreaById(Integer.parseInt(aids[j])).getName()), val);
   }
  JSONArray ja = null;
  Map<String, Object> jsonMap = new HashMap<String, Object>();
  try {
   jsonMap.put("year", year);
   jsonMap.put("rows", list);
   jsonMap.put("level",level);
   ja = JSONArray.fromObject(jsonMap);
  } catch (Exception e) {
   e.printStackTrace();
  }
  String resultString = "";
  resultString = ja.toString();
  resultString = resultString.replace("[", "");
  resultString = resultString.replace("]", "");
  response.reset();
  response.setContentType("text/plain");
  response.setHeader("Pragma", "No-Cache");
  response.setHeader("Cache-Control", "No-Cache");
  response.setDateHeader("Expires", 0);
  request.setAttribute("resultString", resultString);
  super.forView(ConnMapLink, request, response);
 }

 

其中TreeListByArea方法在javaBean中如下:(求和)

public static Integer TreeListByArea(int year,int aid,String ty){
  int val=0;
  try{
   Session session=HibernateUtilBean.currentSession();
      Connection conn=session.connection();
      Statement st=conn.createStatement();
      String hql="select sum(value) as value from TreeData where year="+year+" and areaid="+aid+" and treetype="+ty;
   ResultSet rs=st.executeQuery(hql);
   if(rs.next()){
    val=rs.getInt("value");
   }
   conn.close();
  }catch(Exception e){
   e.printStackTrace();
  }
  return val;
 }

jsp页面测试:

<%@ page language="java" pageEncoding="utf-8"%>
<%
String resultString=(String)request.getAttribute("resultString");
response.getWriter().write(resultString);

 %>

结果:

{"level":1,"year":1980,"rows":{"三门峡市":29997,"洛阳市":59994,"周口市":59994,"鹤壁市":0,"安阳市":59994,"平顶山市":49995,"商丘市":49995,"漯河市":59994,"濮阳市":59994,"郑州市":89991,"驻马店市":49995,"信阳市":78881,"南阳市":49995,"济源市":0,"焦作市":39996,"许昌市":39996,"开封市":79992,"新乡市":6106}}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值