1. 程式人生 > >批量查詢某資訊,處理成Map集合(一);資料庫直接用sql查詢返回Map集合(二)!

批量查詢某資訊,處理成Map集合(一);資料庫直接用sql查詢返回Map集合(二)!

(一)引數是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詳解