1. '유저의 전체 리스트'를 가져오는 법
Spring + MyBatis 로 API 생성해보기(1)
2. '원하는 유저'를 선택하기
Spring + MyBatis로 API 만들어 보기(2)
3. '새로운 유저' 생성
Spring + MyBatis로 API 생성해보기(3)
오늘은 user의 정보를 수정(Update)해보는 API를 만들어 보겠습니다.
(*잊지말 것)
(DB에서 쿼리를 짜고 → 스프링에 반영하는 방식)
DB
1. DB 훑어보기
user 테이블
→ 이 user 테이블에서 2번 유저의 login_id와 password를 수정해보겠습니다. (계정을 바꾸는건 원래 안되지만.... 연습이니 넘어갑시다.)
2. 쿼리 작성하기
→ user_id가 2인 유저의 id, password, name을 수정하는 쿼리입니다.
잘 돌아가는지 확인해보겠습니다.
잘 돌아갑니다.
다음으로 넘어갑시다.
Spring
1. Controller (UserApiController.java)
→ 컨트롤러 부분에서는 크게 언급할 것이 없습니다.
먼저, Http Method의 형태가 PUT(Update이므로)으로 바뀝니다.
@PathVariable 에서는 원하는 userId값을 받고, @RequestBody 에서는 업데이트 하길 원하는 폼(Form)을 받기 위해 User (여기서는 유저 테이블의 정보를 업데이트 할 것이므로 User입니다. <매핑되는 모델이라고 생각하면 됩니다.>)
로 정해줍니다. update 역시 DB에서 값을 가져와서 보여주는 형태가 아니기 때문에, 리턴을 받을 필요가 없지만 성공과 실패여부를 위해 Boolean으로 합니다.
2. Service(UserService.java)
→ boolean은 위에서 설명했고, 요청 파라미터는 userId와 user
return 은 3항 연산자로 updateUser의 성공여부를 판단하기 위한 것입니다.
userId와 user(User) 가 잘 처리 되었으면 true, 아니면 false.
여기서 중간에 else ~ if 문이 들어갔는데, 이 부분은 원하시는 필수 입력 사항을 임의로 정해서 만든 코드 입니다.
Service단은 이처럼, 로직이 들어가는 부분이라고 생각하시면 됩니다.
3-1. Mapper(UserMapper.java)
→ Service에서 0 > ? 를 판별해야 하므로 int를 줍니다.
객체와 파라미터를 동시에 쓸 때는 이 어노테이션을 사용하지 않는다면 오류가 나기 때문에 @Param을 써줍니다.
3-2. Mapper(UserMapper.xml)
→ id는 역시 Mapper.java파일에서 메소드명하고 일치해야 합니다.
PUT 역시 파라미터를 넘겨주는 것이니 parameterType을 작성하여 줍니다.
#{}부분은 이제 좀 익숙해졌으리라 생각하고 넘어가겠습니다. (Mapper.java에서 @Param("~")로 지정을 해준 파라미터는 반드시 ~를 써주어야 합니다. 객체는 ~.객체의 원하는 값)
새로운 Mybatis문법이 등장합니다.
<set>, <if test=...> 이 놈들인데, 어렵게 생각하실 필요가 전혀 없습니다.
<set> → 이놈은 DB의 SET의 역할입니다. 단지 set 구문 안에 여러 조건이 들어갈 때 사용해 주시면 됩니다.
<if test=...> → 이놈은 보이는 그대로 if문입니다. if test까지는 아무 생각 없이 적어주시고, item.loginId가 null이 아니면 login_id 컬럼에 불려오는 객체의 loginId(item.loginId)를 넣겠다는 뜻입니다. (즉, 객체의 파라미터를 넘겨주었다면 그 값을 넣겠다는 뜻입니다.)
password와 name부분도 다 같은 의미입니다.
반드시 </~>이렇게 해서 닫아주셔야 합니다.
4. 결과
Postman에서 보겠습니다.
→ 요청 Http Method와 url입니다.
파라미터는 User 모델에서의 형태에 맞게 보내줍니다.
→ boolean으로 성공여부를 봤습니다.
→ DB를 확인해 봅니다. 잘 업데이트 되었습니다.
다음 시간에는 이제 유저를 지우는 법에 대해서 다뤄보겠습니다.
'Spring > API' 카테고리의 다른 글
Spring + MyBatis로 API 생성해보기(3) (0) | 2018.01.23 |
---|---|
Spring + MyBatis로 API 만들어 보기(2) (0) | 2018.01.19 |
Spring + MyBatis로 API 만들어 보기(1) (3) | 2018.01.18 |