우선 쿼리 작성.
mapper xml에 insert용 태그를 이용하여 쿼리를 작성한다. 나는 auto_increment의 id를 사용하고 있으며 insert가 성공한 뒤에 새로 생성된 id를 리턴받기 위해 selectKey 태그를 insert 태그 안에 사용. xml은 아래와 같이 작성한다.
<![CDATA[ INSERT INTO `dottegidb`.`user_main` ( `id`, `user_name`, `full_name`, `email`, `cellphone`, `bio1`, `bio2`, `sex`, `currency`, `status`, `item_count`, `follows_count`, `followedby_count`, `private`, `reg_time`, `mod_time` ) VALUES ( NULL, #{user_name}, #{full_name}, #{email}, #{cellphone}, #{bio1}, #{bio2}, #{sex}, #{currency}, #{status}, #{item_count}, #{follows_count}, #{followedby_count}, #{private_flag}, #{reg_time}, #{mod_time} ) ]]> SELECT LAST_INSERT_ID();
그리고 controller에 해당 쿼리를 수행할 메소드 추가
public static Result addUser() { SqlSession sqlSession = MyBatisFactory.getDefaultClient(); JsonNode userJson = request().body().asJson(); JSONSerializer serializer = new JSONSerializer(); User user = new JSONDeserializer() .deserialize(userJson.toString(), User.class); sqlSession.insert("sample.addUser", user); Response response = new Response(String.valueOf(user.getId())); String jsonResult = serializer.prettyPrint(true).serialize(response); sqlSession.commit(); return ok(jsonResult); }
마지막으로 routes 파일에 외부에서 접근할 때 사용할 url을 추가해 주면 완성, 당연히 insert 작업이니까 POST로 정의한다.
POST /users/self controllers.Application.addUser()
restclient로 테스트한다.
HTTP Method를 POST로 바꿔주면 Body부분을 편집할 수 있는데 String Body로 선택하고 type은 application/json, encoding은 UTF-8으로 설정한다.
response가 제대로 만들어져 왔으니 DB에 잘 들어갔는지도 확인한다.
update, delete 도 해봐야지. 비슷하겠지.
댓글 없음:
댓글 쓰기