老师,问个问题

来源:3-5 查询1

weixin_慕少8364070

2020-02-15 06:54:23

为什么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回答

好帮手慕柯南

2020-02-16

同学你好!

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

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

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


0

好帮手慕阿满

2020-02-15

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

祝:学习愉快~

0
heixin_慕少8364070
h 但是Map stu = jdbcTemplate.queryForMap(sql, 1003)中,查询的结果是Map<String, Object>我用Map接收也行啊。。为什么外面加一个List就不行了呢?List<Map> stus = jdbcTemplate.queryForList(sql);
h020-02-16
共1条回复

好帮手慕阿满

2020-02-15

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

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

0
heixin_慕少8364070
h 还是没太明白为什么jdbcTemplate.queryForList(sql)返回的List<Map<String, Object>> 不能被List<Map>接收,前者和后者的区别只是前者申明了里面Map的key,value类型啊。。而且我发现返回值为List<List<String>>类型的也不能被List<List>接收,只能被List<List<String>>接收,就是说外面List尖括号里面的必须完全一样才能进行接收,省略泛型或者是写相应的接口都不行,这是为啥呢?
h020-02-15
共1条回复

0 学习 · 8263 问题

查看课程