Play! Framework 2.2.0 x flexjson 3.1 을 이용한 update, delete

update는 insert와 거의 동일하다. 그냥 mapper xml 파일에 관련 쿼리를 넣고 그 쿼리를 사용할 method를 만든 다음에 routes에 url을 추가해서 테스트 해 보면 끝.

우선 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 추가 & 테스트.
정말 쿼리만 제외하고 동일한 작업이기 때문에 따로 포스팅은 없다.

댓글 없음:

댓글 쓰기