mybatis 查詢資料庫,返回map集合
阿新 • • 發佈:2018-11-17
1.不指定返回的key:返回以學員id為key,學員資訊為value的集合
java程式碼(dao實現層)
/** * 獲取學員分類 以id為key, StudentType物件為value * * @return */ @Override public Map<Long, StudentType> getStudentTypeMap() { return this.sqlSession.selectMap("StudentTypeMapper.getStudentTypeMap","id"); }
mapper檔案
<!--獲取學員分類 以id為key, StudentType物件為value--> <select id="getStudentTypeMap" resultType="StudentType"> select <include refid="edu_student_type_columns"/> from edu_student_type </select>
2.指定返回的map中的具體的key
dao層:指定key為userPaper
public Map<String, PaperRecordDto> getExamPaperRecordMaxScoreByUserIds(String userIds) { return sqlSession.selectMap("PaperRecordMapper.getExamPaperRecordMaxScoreByUserIds",userIds,"userPaper"); }
mapper檔案
<!--獲取使用者每張試卷的最高成績的考試資訊 以 userId_parentId 作為key, PaperRecord物件作為value 此處內層查詢 在mysql5.7後 order by 欄位後必須加 limit 否則外層group by 的結果仍未排序--> <select id="getExamPaperRecordMaxScoreByUserIds" parameterType="String" resultType="PaperRecordDto"> SELECT * FROM ( SELECT CONCAT_WS('_', cus_id, parent_id) AS userPaper, exam_exampaper_record.id, exam_exampaper_record.user_score AS userScore, exam_exampaper_record.cus_id AS cusId, exam_exampaper_record.parent_id AS parentId, exam_exampaper_record.add_time AS addTime FROM exam_exampaper_record WHERE exam_exampaper_record.status = 0 AND !ISNULL(parent_id) AND cus_id IN (${value}) ORDER BY user_score DESC LIMIT 100000000 )AS a GROUP BY a.cusId, a.parentId </select>