老师,问个问题

老师,问个问题

为什么testQuertMap1中:

public void testQuertMap1() {
    String sql = "select * from student where id = ?";
    Map stu = jdbcTemplate.queryForMap(sql, 1003);
    System.out.println(stu);
}

能用Map接收Map<String, Object>类型的,不会报错,但是在testQuertMap2中:

public void testQuertMap2() {
    String sql = "select * from student";
    List<Map> stus = jdbcTemplate.queryForList(sql);
    System.out.println(sql);
}

用List<Map>就不能接收List<Map<String, Object>>类型的呢?

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好!

  1. List<Map<String ,Object>>  可以转化为 List

  2. 但是List中指定的数据类型是不能够自动转化的,比如:List<Map<String ,Object>不能转为List<Map>

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~


好帮手慕阿满 2020-02-15 19:26:50

抱歉同学,理解错了同学的意思。这里应该是查询处理的结果和接收的结果不同,所以报错,同学可以在获取结果后,将其强制转换一下,在赋值试试。

祝:学习愉快~

  • 提问者 weixin_慕少8364070 #1
    但是Map stu = jdbcTemplate.queryForMap(sql, 1003)中,查询的结果是Map<String, Object>我用Map接收也行啊。。为什么外面加一个List就不行了呢?List<Map> stus = jdbcTemplate.queryForList(sql);
    2020-02-16 02:48:55
好帮手慕阿满 2020-02-15 14:21:58

同学你好,List和Map不同,Map是以key-value形式存储数据,使用Map接收Map类型的值可以,但是list是集合,不能直接将Map赋值给list。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 weixin_慕少8364070 #1
    还是没太明白为什么jdbcTemplate.queryForList(sql)返回的List<Map<String, Object>> 不能被List<Map>接收,前者和后者的区别只是前者申明了里面Map的key,value类型啊。。而且我发现返回值为List<List<String>>类型的也不能被List<List>接收,只能被List<List<String>>接收,就是说外面List尖括号里面的必须完全一样才能进行接收,省略泛型或者是写相应的接口都不行,这是为啥呢?
    2020-02-15 15:09:56
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师