우선 xml 파일에 쿼리를 넣자. 당연하겠지만 update니까 update 태그를 사용한다. return 받기로 한 것은 없으니까 관련 type에 대한 설정은 추가하지 않는다.
그 다음에 전에 사용하던 테스트용 controller에 update용 method를 만들자.
insert와 똑같은데 별 생각없이 만든거라 이렇고 좀 더 다듬어도 괜찮을 것 같다. 참고로 Response는 다른 형태로 만들어야 할 것 같음.
public static Result modUser() { SqlSession sqlSession = MyBatisFactory.getDefaultClient(); JsonNode userJson = request().body().asJson(); JSONSerializer serializer = new JSONSerializer(); User user = new JSONDeserializer() .deserialize(userJson.toString(), User.class); sqlSession.update("sample.modUser", user); Response response = new Response(String.valueOf(user.getId())); String jsonResult = serializer.prettyPrint(true).serialize(response); sqlSession.commit(); return ok(jsonResult); }
마지막으로 routes에 url 추가.
PUT /users/self controllers.Application.modUser()
insert할 때와 같은 경로를 사용하는데 HTTP Method만 update니까 PUT을 사용하는 것으로 한다.
테스트 해 보면
~/Project/workspace/dottegi/dottegi_server> play debug Listening for transport dt_socket at address: 9999 [info] Loading project definition from /Users/yangsaerohoon/Project/workspace/dottegi/dottegi_server/project [info] Set current project to dottegi_server (in build file:/Users/yangsaerohoon/Project/workspace/dottegi/dottegi_server/) _ _ __ | | __ _ _ _ | '_ \| |/ _' | || | | __/|_|\____|\__ / |_| |__/ play 2.2.0 built with Scala 2.10.2 (running Java 1.7.0_25), http://www.playframework.com > Type "help play" or "license" for more information. > Type "exit" or use Ctrl+D to leave this console. [dottegi_server] $ run --- (Running the application from SBT, auto-reloading is enabled) --- [info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000 (Server started, use Ctrl+D to stop and go back to the console...) [info] play - datasource [jdbc:mysql://127.0.0.1/dottegidb] bound to JNDI as DefaultDS [info] play - database [dottegidb] connected at jdbc:mysql://127.0.0.1/dottegidb [info] play - Application started (Dev)
잘 뜨고. restclient로 실제 테스트를 한다. insert할 때와 비슷한 방법으로 HTTP Method를 PUT으로 맞추고 body에 id가 포함된(아직은 이렇게 만들어짐) json 문자열을 넣어주고 돌려본다.
당연히 잘 됨...
마지막으로 delete 테스트. 똑같다. 쿼리 만들고 메소드 만들고 url 추가 & 테스트.
정말 쿼리만 제외하고 동일한 작업이기 때문에 따로 포스팅은 없다.
댓글 없음:
댓글 쓰기