인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

권주희님의 프로필 이미지
권주희

작성한 질문수

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

13강 데이터 베이스 연결문제..?

작성

·

182

0

13강을 듣고 데이터베이스를 연결했는데 이름과 나이를 등록하면 둘다 빈칸으로 떠요. 터미널에서 mysql 조회해보면 이름 나이 다 잘 뜨는데 왜 그럴까요? 수정,삭제 기능도 안되구요ㅠㅠ

답변 1

1

최태현님의 프로필 이미지
최태현
지식공유자

안녕하세요 주희님!! 기능이 동작하지 않다니 답답하시겠어요! 🥺

"이름과 나이를 등록하면 둘 다 빈칸으로 떠요" 라고 말씀해주신게 어떤 상황인지 화면을 보여주시면 조금 더 문제를 파악하는데 도움이 될 것 같습니다!

현재 작성하신 코드도 스크린샷 등으로 함께 올려주시면 확인해볼 수 있을 것 같아요!

감사합니다! 🙏

권주희님의 프로필 이미지
권주희
질문자

image등록하고 목록을 보면 이런식으로 뜹니다ㅜ

작성한 코드는 이렇습니다!

image

image

image

최태현님의 프로필 이미지
최태현
지식공유자

넵넵 확인했습니다! 현재 DB는 어떻게 되어 있고, 어떤 데이터가 들어 있나요?

  • desc [테이블 이름]

  • select * from [테이블 이름]

이 두 가지를 사용하시면 됩니다!

권주희님의 프로필 이미지
권주희
질문자

image이렇게 되어있습니다!

최태현님의 프로필 이미지
최태현
지식공유자

엇! 정말 이상하군요!! 현재 상황을 정리하면 이렇습니다.

  • 화면에서 데이터 "개수"는 잘 보이는데 사용자 이름 / 나이가 이상하게 보인다.

  • 실제로 DB에는 데이터가 정상적으로 잘 들어 있다.

 

그렇다면 저는 조회 하는 로직을 가장 첫 번째로 의심해볼 것 같아요!

조회 하는 로직을 확실히 의심하기 위해서는 API 응답이 어떻게 오는지도 확인해보면 좋은데요, 웹 UI를 사용하는 대신 post man을 이용해 해당 GET API 응답을 체크해보시면 좋습니다.

 

조회하는 로직은 특히 아래 부분을 볼 것 같습니다.

getUsers() 함수 (즉 GET API) 에서

return jdbcTemplate.query(sql, (rs, rowNum) -> {
  // 데이터를 가져온다
  return new UserResponse(id, name, age);
});

와 같이 되어 있는데 아래와 같이 System.out.println 등을 활용해서 데이터를 찍어볼 것 같습니다.

return jdbcTemplate.query(sql, (rs, rowNum) -> {
  // 데이터를 가져온다
  System.out.printf("이름 : %s\n", name); // <- 이렇게 확인해보고,
  
  UserResponse r =  new UserResponse(id, name, age);
  System.out.printf("이름 : %s\n", r.getName()); // <- UserResponse에도 잘 들어 있는지 확인해보고
});

정말 데이터를 잘 가져왔는지, new UserResponse를 했을 때 정말 이름과 나이가 잘 담기는지 체크해보시면 좋을 것 같아요!

권주희님의 프로필 이미지
권주희
질문자

해결이 됐어요! 감사합니다!!

getUsers를 보다 보니까 제가 UserResponse에 생성자를 제대로 안쓴걸 발견했습니다ㅠ

감사합니다~~

 

최태현님의 프로필 이미지
최태현
지식공유자

해결되셨다니 다행입니다! 😊 강의 진행하시다가 또 어려운 점 있으시면 편하게 질문 남겨주세요~ 감사합니다! 🙏

권주희님의 프로필 이미지
권주희

작성한 질문수

질문하기