[웹 개발] Eclipse REST API 구현 - UPDATE, DELETE문 처리

    728x90

    안녕하세요

    로로봉입니다 : )

    오늘은 저번 포스팅에 이어 UPDATE와 DELETE 쿼리문을 처리하는 방법을 알아보도록 하겠습니다.

    INSERT를 한번 해보았기 때문에 금방 이해하실 수 있으실 것 같습니다.


    1) UPDATE

    ① PeopleSql.groovy

    repository 패키지에 PeopleSql.groovy 파일을 열어 Update 쿼리를 추가해 줍니다.

    public static final String UPDATE = """
       UPDATE people_tbl SET p_name = :name, p_age = :age, p_job = :job WHERE 1=1
    """;
    	
    public static final String SEQ_CONDITION = """
       AND p_seq = :seq
    """;

    [ 그림 1 : Update SQL 추가 ]

    ② PeopleRepository.java

    쿼리를 추가해주었다면 이제 PeopleRepository 클래스에 실제 업데이트 메서드를 만들어 줍니다.

    public Integer updatePeople(People people) {
       String qry = PeopleSql.UPDATE;
       if(!people.getSeq().toString().isEmpty())
          qry += PeopleSql.SEQ_CONDITION;
    		
       SqlParameterSource param = new MapSqlParameterSource("seq", people.getSeq())
    				.addValue("name", people.getName())
    				.addValue("age", people.getAge())
    				.addValue("job", people.getJob());
       return namedParameterJdbcTemplate.update(qry, param);
    }

    [ 그림 2 : updatePeople 메서드 추가 ]

    ③ InfoService.java

    이제 서비스를 이용해 Repository의 메소드를 호출할 수 있도록 InfoService 서비스 클래스에 메서드 하나를 추가해줍니다.

    public Integer updatePeople(People people) {
       log.debug("people seq = {}", people.getSeq());
       return peopleRepository.updatePeople(people);
    }

    [ 그림 3 : InroService 추가 ]

    ④ InfoController5.java

    이제 InfoController5 클래스에 UpdatePeople로 POST로 맵핑해줍니다.

    @PostMapping("/UpdatePeople")
    public ResponseEntity<String> UpdatePeople(@RequestBody People people) {
       try {
          log.debug("people = {}", people.toString());
          Integer updatedCnt = infoService.updatePeople(people);
          return new ResponseEntity<>(String.format("%d updated", updatedCnt), HttpStatus.OK);
       } catch (Exception e) {
          log.error(e.toString());
          return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
       }
    }

    POST로 전달되는 데이터는 로그로 기록하고, infoService 객체를 통해 updatePeople 메소드를 호출하였습니다.

    [ 그림 4 : POST UpdatePeople 메소드 작성 완료 ]

    ⑤ Post 호출 방식으로 Update 호출

    이제 Talend API Tester를 이용해 업데이트 해보도록 하겠습니다.

    [ 그림 5 : UpdatePeople 호출 ]

    Send 버튼으로 호출을 하게 되면 아래와 같이 Body부분에 몇 개의 데이터가 updated 되었는지 반환되었습니다.

    [ 그림 6 : UpdatePeople 호출 결과 ]

    people_tbl 데이터를 조회해보면 p_seq 가 4인 데이터가 변경 된 것을 볼 수 있습니다.

    [ 그림 7 : people_tbl 데이터 결과 ]


    2) DELETE

    ① PeopleSql.groovy

     Update와 동일하게 쿼리부터 만들어 보도록 하겠습니다.

    PeopleSql.groovy 파일에 DELETE 문을 추가해줍니다.

    public static final String DELETE = """
       DELETE FROM people_tbl WHERE 1=1
    """

    [ 그림 8 : Delete 쿼리 추가 ]

    ② PeopleRepository.java

    Repository에 아래와 같이 delete 메서드를 만들어 줍니다.

    public Integer deletePeople(Integer seq) {
       String qry = PeopleSql.DELETE + PeopleSql.SEQ_CONDITION;
    		
       SqlParameterSource param = new MapSqlParameterSource("seq", seq);
       return namedParameterJdbcTemplate.update(qry, param);
    }

    [ 그림 9 : deletePeople 작성 완료 ]

    ③ InfoService.java

    이제 서비스에 POST에서 호출할 수 있도록 메서드를 만들어 줍니다.

    public Integer deletePeople(Integer seq) {
       log.debug("people seq = {}", seq);
       return peopleRepository.deletePeople(seq);
    }

    [ 그림 10 : 서비스 메서드 작성 완료 ]

    ④ InfoController5.java

    이번에는 키값만 전달 받도록 @RequestParam을 사용하여 seq 값만 전달 받도록 하였습니다.

    InfoController5 클래스에 아래 메소드를 추가해줍니다.

    @PostMapping("/DeletePeople")
    public ResponseEntity<String> DeletePeople(@RequestParam(value="seq") Integer seq) {
       try {
          log.debug("people seq = {}", seq);
          Integer deletedCnt = infoService.deletePeople(seq);
          return new ResponseEntity<>(String.format("%d deleted", deletedCnt), HttpStatus.OK);
       } catch (Exception e) {
          log.error(e.toString());
          return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
       }
    }

    [ 그림 11 : DeletePeople 작성 완료 ]

    ⑤ Post 호출 방식으로 Delete 호출

    이제 Talend API Tester 프로그램으로 DeletePeople을 호출해보겠습니다.

    DeletePeople 메서드는 키값만 파라미터로 넘기기 때문에 Content-Type에 application/x-www-form-urlencoded 를 넣어주어야 합니다.

    Body 부분을 Form형식으로 변경하면 알아서 변경이 되긴 합니다.

    [ 그림 12 : DeletePeople 호출 ]

    Send 버튼으로 호출하게 되면 아래와 같이 1 deleted가 결과로 전달되는 것을 볼 수 있습니다.

    [ 그림 13 : DeletePeople 호출 결과 ]

    이제 데이터베이스에 people_tbl에 데이터를 확인해보면 3번 키 값의 데이터가 제거된 것을 볼 수 있습니다.

    [ 그림 14 : people_tbl 데이터 결과 ]

     

    공감 ♥ + 구독부탁드립니다 : )

    728x90
    반응형

    댓글