枚举类型group by查询各个类型的数目

来源:互联网 发布:mac电脑壁纸高清 编辑:程序博客网 时间:2024/06/06 11:42
1.Action层
/** * 查询申请单各个状态记录 * * @return */@RequestMapping(value = "/statusRows", method = RequestMethod.GET)@ResponseBodypublic JSONObject statusRows() {   JSONObject jsonObject = new JSONObject();   QuarantineState[] quarantineStates = QuarantineState.values();   List<Object> objectList = quarantineApplicationBiz.statusCounts();   if (CollectionUtils.isNotEmpty(objectList)) {      for (int i = 0; i < quarantineStates.length; i++) {         boolean flag = true;         for (Object object : objectList) {            JSONArray jsonArray = JSONArray.fromObject(object);            String status = getJsonString(jsonArray, 0);            String count = getJsonToIntegerString(jsonArray, 1);            if (status.equals(String.valueOf(i))) {               jsonObject.put(quarantineStates[i] + "Size", count);               flag = false;               break;            }         }         if (flag) {            jsonObject.put(quarantineStates[i] + "Size", 0);         }      }   }   JSONObject result = ResponseJSON.Ok("查询申请表成功", jsonObject);   return result;}
//判断是否为空
private static String getJsonString(JSONArray ja, Integer index) {   return "null".equals(ja.getString(index)) ? "" : ja.getString(index);}private static String getJsonToIntegerString(JSONArray ja, Integer index) {   String money = "null".equals(ja.getString(index)) ? "" : ja.getString(index);   return StringUtils.isEmpty(money) ? "0" : money;}
2.Dao层
//原生sql,查询各个状态记录数public List<Object> statusCounts() {   String sql="select `status` ,count(*) from quarantine_application where status IS NOT NULL GROUP BY `status`";   return entityManager.createNativeQuery(sql).getResultList();}

//jpa的sql publicList<QuarantineApplication> status(Map<String, String> queryHash) { Stringsql="select count(*) from QuarantineApplication q group by status"; TypedQuery<QuarantineApplication>typedQuery = entityManager.createQuery(sql, QuarantineApplication.class); returntypedQuery.getResultList(); }

原创粉丝点击