jdbcTemplate 中的queryForList,你真的懂吗?
你想象中的queryForList是不是应该长成下面这种模样?
String sql = "select * from test.user";
List<User> userList = jdbcTemplate.queryForList(sql,User.class);
然后,很激动的点了run
程序跑出来一个,然后痛苦面具😖😖😖😖😖,不是list吗?为什么expected是1?
我总共5条数据啊,为什么actual 3?
真相只有一个:
传了对应class的,创建的是singleColumnRowMapper,也就是只取一列的值,再看看文档注释
你一看就是用多了ORM框架吧,这玩意不支持自定义bean勒,这个class也只是支持Integer,String这些基本类型
现在明白except 1,actual 3 是啥意思了吧?
人家期望返回的是1列,但是你返回的了3列,还没明白? 那我举个例子
String sql = "select id from User";
List<Integer> id = jdbcTemplate.queryForListt(sql, Integer.class);
返回id这一列,就可以用UserList 这个list是所有id的集合