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

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>

猜你喜欢

转载自blog.csdn.net/qq_35275233/article/details/84028674