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>