2022_02_19 - oneso123456789/2022 GitHub Wiki

other

read(select) 처리

insert가 된 데이터를 조회하는 작업은 PK를 이용해서 처리하므로 BoardMapper의 파라미터 역시
BoardVO의 bno타입 정보를 이용해서 처리함

com.crow.mapper.BoardMapper.interface 추가내용

public BoardVO read(Long bno);

BoardMapper.xml에 추가되는 <select>

<select id="read" resultType="com.crow.domain.BoardVO">
    select * from tbl_board where bno = #{bno}
</select>

MyBatis는 Mapper 인터페이스의 리턴 타입에 맞게 select의 결과를 처리하기 때문에 tbl_board의 모든 칼럼은 BoardVO의
bno, title, content, writer, regdate, updateDate속성값으로 처리됨
좀 더 엄밀하게 말하면 MyBatis는 bno라는 칼럼이 존재하면 인스턴스의 setBno()를 호출함
MyBatis의 모든 파라미터와 리턴 타입의 처리는 get 파라미터명(), set 칼럼명()의 규칙으로 호출됨

다만 위와 같이 #{속성}이 1개만 존재하는 경우에는 별도의 get 파라미터명()을 사용하지 않고 바로 처리됨

현재 테이블에 존재하는 데이터의 bno 칼럼의 값을 이용해서 테스트 코드를 통해 확인함

BoardMapperTests 클래스 일부

    @Test
    public void testRead() {
        // 존재하는 게시물 번호로 테스트
        BoardVO board = mapper.read(4L);

        log.info(board);
    }

mapper.read()를 호출할 경우에는 현재 테이블에 있는 데이터의 bno 값이 존재하는지 여부를 반드시 확인해야 함

8.2.3 delete 처리

특정한 데이터를 삭제하는 작업 역시 PK 값을 이용해서 처리하므로 조회하는 작업과 유사하게 처리함
등록, 삭제, 수정과 같은 DML작업은 몇건의 데이터가 삭제(혹은 수정)되었는지를 반환할 수 있음

BoardMapper 인터페이스 일부

public int delete(Long bno);

BoardMapper.xml의 일부

<delete id="delete" >
    delete tbl_board where bno = #{bno}
</delete>

Mapper.xml에 SQL문 작성시 ;세미콜론 찍지말기

delete()의 메서드 리턴 타입은 int로 지정해서 만일 정상적으로 데이터가 삭제되면 1 이상의 값을
가지도록 작성함
테스트 코드는 현재 테이블에 존재하는 번호의 데이터를 삭제해 보고 '1'이라는 값이 출력되는지 확인해야함
만약 해당 번호의 게시물이 없다면 '0'이 출력됨

BoardMapperTests 클래스의 일부

    @Test
    public void testDelete() {

        log.info("DELETE COUNT: " + mapper.delete(3L));
    }

testDelete()의 경우 3번 데이터가 존재했다면 INFO: ~ DELETE COUNT: 1이 출력됨

8.2.4 update 처리

⚠️ **GitHub.com Fallback** ⚠️