Java 避免多次查詢資料庫獲取相同的值 減少查詢資料庫的小技巧
阿新 • • 發佈:2020-12-28
文章目錄
通過Map集合儲存資料
1、使用場景
多次訪問資料庫,但查詢的資料結果集是不變的。
比如:1、新增記錄到資料庫
這條記錄中有一個唯一標識,這時候需要查詢資料庫,進行判斷是否資料庫中已經存在該值。
2、新增資料時,給的是名稱,但要求存的是主鍵,需要到另一個表去查詢這些資料。
2、使用方法
// Map<key, value> map = new HashMap<key, value>(); // key是唯一的,後面加入的key會把相同的前面的值覆蓋 // key和value 的資料型別是Object Map<Object, Object> map = new HashMap<Object, Object>();// jdk版本不同,new HashMap()初始化不一樣 ... // 把查出來的資料存放到map中 // 需要的時候再用對應的值取出 // 常用的方法 map.getKey();// 通過key獲取value,返回value值 map.containsKey(key);// 是否包含key,返回true/false map.containsValue(value);// 是否包含value,返回true/false // 遍歷 for(Map.Entry<Object, Object> m: map.entrySet()){ Object = m.getkey();// 獲取key Object = m.getValue();// 獲取value } ...
3、舉例說明
班上來了幾位新同學,需要把同學的資訊新增到學生表裡面
學號作為唯一標識,新增資料的時候就要校驗
// 語句 String sql_query= "select 學號 from student"; String sql_insert= ""; // 方法呼叫 QueryValue(sql_query); // 存值 Map<Integer, Object> map = new HashMap<Object, Object>(); for(int i = 0; i< QueryValue(sql_query).length){ ... //map.put(key,value); map.put(i,queryValue[i]); ... } // 取值判定,value 表示要新增的學號 if(map.containsValue(value)){ throw new Exception("資料表中已經存在這個學號!\n"+ value);// 丟擲錯誤,中斷執行 }else{ InsertValue(sql_insert);// 新增資料,一般也要做異常處理 }