批量查詢某資訊,處理成Map集合(一);資料庫直接用sql查詢返回Map集合(二)!
阿新 • • 發佈:2018-12-28
(一)引數是List集合,到資料庫批量查詢符合某一條件的資料,返回新的List集合,方法處理將兩個List集合一個作為鍵,一個作為值裝入一個Map集合並返回,方便呼叫,減少多次的JDBC互動,減輕資料庫壓力。
/**
* 根據userIds資訊查詢使用者資訊,返回Map集合
* @param userIds
* @return
*/
public Map<Long, User> getUserInfoMap(List<Long> userIds) {
//根據userId查詢相對應的user資訊集合
Map<Long, User> userInfoMap = Maps.newHashMap();
//放入set,去除重複的userId
Set<Long> userIdSet = Sets.newHashSet(userIds);
List<User> userInfoList = userEvaluationsMapper.getUserListByUserIds(userIdSet);
//迴圈user資訊集合,放入map集合中
for (User user : userInfoList) {
//以userId為鍵,user物件為值儲存
userInfoMap.put(user.getUserId(), user);
}
//返回使用者資訊的map集合
return userInfoMap;
}
(二)引數是List集合,到資料庫批量查詢符合某一條件的資料,直接返回Map集合,方便呼叫,減少多次的JDBC互動,減輕資料庫壓力。
@Select("<script>" +
"SELECT * FROM user_info WHERE" +
"user_id IN " +
"<foreach collection = 'user_ids' separator = ',' open = '(' close = ')' item = 'user_id'>" +
" #{user_id}" +
"</foreach>" +
"</script>")
@MapKey("userId")
Map<String, CalendarTask> getCalendarTaskMap(@Param("user_ids") List<Long> userIds);
/**
* 引數是List集合,集合內攜帶條件(多個使用者的user_id==userIds);
* @MapKey()註解,我理解的是規定Map集合的key,本map的key就是每一個userId,所以引數是該sql語句查詢結果(*查詢出的資料有userId欄位)的每條資料中的欄位值==>userId;
*/
上面的動態SQL看不太懂的可以檢視我以往的文章,裡面有詳細講解==>點我瞭解Mapper檔案用註解寫動態SQL詳解