您的位置:首页 > 数据库

mybatis 查询数据库,返回map集合

2018-11-13 14:45 609 查看

1.不指定返回的key:返回以学员id为key,学员信息为value的集合 

java代码(dao实现层)

[code]/**
* 获取学员分类 以id为key, StudentType对象为value
*
* @return
*/
@Override
public Map<Long, StudentType> getStudentTypeMap() {
return this.sqlSession.selectMap("StudentTypeMapper.getStudentTypeMap","id");
}

mapper文件 

[code]<!--获取学员分类 以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

[code]    public Map<String, PaperRecordDto> getExamPaperRecordMaxScoreByUserIds(String userIds) {
return sqlSession.selectMap("PaperRecordMapper.getExamPaperRecordMaxScoreByUserIds",userIds,"userPaper");
}

 

mapper文件

[code] <!--获取用户每张试卷的最高成绩的考试信息 以 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>

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: