为什么xml文件里面写的返回的数据格式和mapper里面写的返回数据格式不一致
为什么xml文件里面写的返回的数据格式和mapper里面写的返回数据格式不一致
为什么xml文件里面写的是
resultType="java.util.LinkedHashMap" 然而在mapper的接口文件中却是List<Map> LinkedHashMap 不应该是Map的数据类型吗?
正在回答
同学你好,1、Map是接口,是所有以key-value形式存储数据的集合的父接口。而LinkedHashMap是Map接口的实现类,除去接口的特点,还会维护数据存储到集合中的顺序。
2、因LinkedHashMap是Map接口的实现类,所以在mapper接口文件中可以用父接口(Map)接收子接口(LinkedHashMap)的类型数据。
祝学习愉快!
同学你好,可以先了解一下resultType与mapper接口类返回值的关系。
1、xml中返回类型是通过resultType设置的sql返回值类型,具体将数据是返回一条还是多条并是集合还是对象是根据mapper接口中设置的返回值确定的。如果只是一个实体类对象表示就是一条数据,如果是一个集合表示是多条数据。
1)下方语句是表示查询employee_id等于***的数据(根据id查询一般只会查询到一条),会返回Employee类型的数据。如果此时查询到了多条数据,则因接口中selectById()方法返回值类型是Employee。则表示返回值只能是一个对象,从而导致只会展示查询到的最后一条数据(最后一条数据会覆盖之前的数据),所以只展示一条数据。
<select id="selectById" parameterType="Long" resultType="com.imooc.oa.entity.Employee"> select * from adm_employee where employee_id = #{value} </select>
2)下方xml中虽然设置的返回值是Employee类型,但因接口中的selectByParams()方法返回类型是List<Employee>,则会将返回的Employee对象存储到List集合中,所以最后展示的是多条数据(如果是单条数据也会存储到集合中)。
<select id="selectByParams" parameterType="java.util.Map" resultType="com.imooc.oa.entity.Employee"> select * from adm_employee where 1=1 <if test="level != null"> and level = #{level} </if> <if test="departmentId != null"> and department_id = #{departmentId} </if> <if test="title != null"> and title = #{title} </if> </select>
2、同反馈的截图,返回类型是LinkedHashMap,会将数据存储在LinkedHashMap集合中返回。
在mapper接口中定义的是List<Map>,就是将返回的数据(LinkedHashMap集合)存储到List集合中。因LinkedHashMap是Map的子接口,所以将泛型设置为Map类型。
祝学习愉快!
- 参与学习 2020 人
- 提交作业 1249 份
- 解答问题 1202 个
2024重磅革新,超百小时内容豪华升级,加速提升高级技能与高薪就业竞争力 课程紧贴企业最新人才需求,历经7年持续迭代,帮助万名学子入行转行 从零起点到高阶实战,学习路径稳健顺滑,成就从小白到工程师高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星