Код контроллера:

@GetMapping("/show/{id}")
public ResponseEntity<Student> findId(@PathVariable Student student) throws Exception {
    Student showId = studentService.findId(student);
    return new ResponseEntity<Student>(showId, HttpStatus.OK);
}

Необходимо вернуть объект для пути id

Код репозитория:

      public Student findId(Student student) throws Exception {
        Connection connect = null;
        Statement st = null;
        ResultSet rec = null;
        PreparedStatement pre = null;
        List<Student> userlist = new ArrayList<Student>();
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            connect =  DriverManager.getConnection("jdbc:mysql://localhost/mydatabase" +"?user=root&password=root&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC");
            connect.setAutoCommit(false);

            st = connect.createStatement();

            String sql = "SELECT * FROM student WHERE studentid = ? ";

            pre = connect.prepareStatement(sql);
            pre.setLong(1, student.getId());
            pre.executeQuery();

        } catch (Exception e) {
            if (connect != null) {
                try {
                    st.close();
                    connect.rollback();
                } catch(SQLException e2) {
                    e2.printStackTrace();
                }
            }
        } finally {
            if (st != null) {
                try {
                    st.close();
                    connect.setAutoCommit(true);
                } catch(SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        try {
            connect.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return student;
    }
1
Thammaphon 20 Дек 2019 в 12:43
Вы выполнили SELECT * FROM student WHERE studentid = ?, передав фактический идентификатор студента?
 – 
PythonLearner
20 Дек 2019 в 12:47
Да, я получил идентификатор из базы данных по типу long
 – 
Thammaphon
20 Дек 2019 в 12:52
Вы не формируете объект Student.
 – 
PythonLearner
20 Дек 2019 в 12:56

1 ответ

ResultSet result = pre.executeQuery();

while (result.next()) {
   long id = resultSet.getLong("studentId");
   String name = resultSet.getString("name");
   // another fields
   return new Student(id, name);
}

А для контроллера, если нужно, только идентификатор (@PathVariable Long id) более легкий.

Student response = studentService.findById(id);
return ResponseEntity.ok(response);
0
Dmitry Rohov 20 Дек 2019 в 12:55