在項目開發中,對於數據庫中不經常更改,但需要經常查詢的數據,可以使用Map將數據緩存,減少數據庫IO次數,提升性能。一下代碼是實現過去12個月,按月份查詢每個月的進出廠數量,每個月的數量不會改變。
//首先定義一個全局私有變量map private Map<String,List<Map<String, String>>> map = new HashMap<String,List<Map<String, String>>>(); //業務方法 public ItemEntity getMonthCardIssue() throws Exception { //map對應key的value為空時,才走數據庫查詢,並將查詢出的數據put進map里,下次查詢時就不需要從數據庫里查詢 List<Map<String, String>> list = map.get("getMonthCardIssue"); if(list==null || list.isEmpty()) { list = this.findCardNum(); map.put("getMonthCardIssue", list); } ItemEntity item = new ItemEntity(); List<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>(); List<String> listTitle = new ArrayList<String>(); for (int i = list.size() - 1; i >= 0; i--) { HashMap<String, Object> vals = new HashMap<String, Object>(); vals.put("value", list.get(i).get("EXITNUMB")); listItem.add(vals); int month = Integer.parseInt(list.get(i).get("MONTH").substring(4)); listTitle.add(month + "月"); } Collections.reverse(listTitle); item.setNumber(listItem); item.setTitle(listTitle); return item; }
這種方法在服務器重啟時map會清空,可以實現一個接口map.clear()手動清空map