기초도 잘 안되어 있고, 응용을 해서 이렇게 복잡한 형식으로 된 프로젝트를 만들어 본 적이 없어서 꽤나 개고생을 하고 있다.
먼저 이 프로젝트는 VO 와 MyBatis와 연동할 Mapper 그리고 서비스 + 서비스impl + Controller 이렇게 구성되어 있다.
현재 하려고 하는 것은 화면에서 회원의 기본정보를 가져와서 기본정보를 수정하는 로직을 하려고 한다.
VO 와 Mybatis 그리고 Mapper 는 만드는데 그렇게 큰 어려움이 없었다.
하지만 JSP (프론트) 에서 ajax 로 데이터를 보내고 그것을 처리하는 service와 controller 가 어려움이 있었다.
일단 컨트롤러는 아래와 같이 ResponseEntity<?> 로 구성했다. 이유는 추후에 API 분리를 할 수 있게끔 처리하기 위해서다. 아직 스프링에 대해서 자세히 모르다 보니 해당 어노테이션이 어떤 기능이다 라는 것은 알겠지만 전체적인 로직에서 왜 굳이 이렇게? 이것만? 을 써야하는건지는 잘 모르겠다. (추후에 선배님들께 여쭤봐야할듯....)
그리고 serviceImpl 은 이렇게 구성했다.
하지만 이렇게 하기 전에 JSP(프론트)에서 기본정보들을 수정하고 '저장' 버튼을 누르면 'There is no getter for property named 'name' in 'class.....' 라고 이런 에러가 계속 떴다.
처음에는 Mybatis 에서 parameterType이 뭔가 잘못된 줄 알았는데.....알고보니 serviceImpl 에서 계속 반환타입이 틀려서 에러가 뜬 것이였다.
즉, Mapper 를 update를 수행하는 쿼리하나, 그리고 update가 수행이 되고 나서 결과에 대한 것을 알려주는 것을 하나 더 만든 것이다.