在开始使用NamedParameterJdbcTemplate 的时候,query查询的返回结果都是基本数据类型的包装类,但是今天使用自定义的类作为接收对象的时候发现一直报错
jdbcTemplate.queryForObject(QUERY_STUDENT, new MapSqlParameterSource("stuCode", stu.getStuCode()), Student.class);
org.springframework.jdbc.IncorrectResultSetColumnCountException: Incorrect column count: expected 1, actual 2
其实报错的意思也就是结果返回有两列,但是你只能接收一列
后来经过查询验证发现,自定义的对象需要通过
BeanPropertyRowMapper
将数据库查询的结果转换成Java类对象
也就是
jdbcTemplate.queryForObject(QUERY_STUDENT, new MapSqlParameterSource("stuCode", stu.getStuCode()), new BeanPropertyRowMapper<>(Student.class));
因为数据库的 命名一般都是通过下划线进行分割,Java是驼峰命名,如student_name,studentName。
通过BeanPropertyRowMapper这个类可以进行转换绑定