JdbcTemplate "queryForObject" 和 "query" 在 Spring 中已被弃用。应该用什么代替?

Thi*_*mal 7 java sql spring jdbctemplate spring-boot

查询对象,

Student student = return jdbcTemplate.queryForObject("select * from student_id = ?", new Object[] { studentId }, studentRowMapper);
Run Code Online (Sandbox Code Playgroud)

对于查询,

List<Student> students = return jdbcTemplate.query("select * from class_room_id = ?", new Object[] { classRoomId }, studentRowMapper);
Run Code Online (Sandbox Code Playgroud)

双方jdbcTemplate.queryForObjectjdbcTemplate.query在上面春季启动2.4.X已被弃用

M. *_*num 17

正如该类的javadoc以及升级/迁移指南中所解释的那样,它解释了您应该使用varargs 方法

jdbcTemplate.queryForObject("select * from student_id = ?", studentRowMapper, studentId);
Run Code Online (Sandbox Code Playgroud)

List<Student> students = return jdbcTemplate.query("select * from class_room_id = ?", studentRowMapper, classRoomId);
Run Code Online (Sandbox Code Playgroud)


小智 17

您只需更改数组 Object[ ] 和映射器的顺序即可。当前版本支持此语法。所以你的代码将是:

Student student = return jdbcTemplate.queryForObject("select * from student_id = ?", 
studentRowMapper, new Object[] { studentId });
Run Code Online (Sandbox Code Playgroud)

List<Student> students = return jdbcTemplate.query("select * from class_room_id = ?", 
studentRowMapper, new Object[] { classRoomId });
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看此方法的文档。

  • 您可以通过删除参数周围的“new Object[] { ... }”来进一步简化,因为它是一个可变参数。 (4认同)