JDBC 개발 - 삭제

Minseo Kang·2023년 3월 19일
0
post-thumbnail

삭제는 등록과 비슷함
데이터를 변경하는 쿼리는 executeUpdate() 사용




01. MemberRepository 클래스에 delete 메소드 작성


  • 회원을 삭제하는 메소드

public void delete(String memberId) throws SQLException {

	String sql = "delete from member where member_id=?";

	Connection con = null;
	PreparedStatement pstmt = null;

	try {
		con = getConnection();
		pstmt = con.prepareStatement(sql);
		pstmt.setString(1, memberId);
		pstmt.executeUpdate();
	} catch (SQLException e) {
		log.info("db error", e);
		throw e;
	} finally {
		close(con, pstmt, null);
	}
}

02. MemberRepositoryV0Test(테스트 코드) 작성


package hello.jdbc.repository;

import hello.jdbc.domain.Member;
import lombok.extern.slf4j.Slf4j;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import java.sql.SQLException;
import java.util.NoSuchElementException;

@Slf4j
class MemberRepositoryV0Test {

    MemberRepositoryV0 repository = new MemberRepositoryV0();

    @Test
    void crud() throws SQLException {

        // save
        Member member = new Member("memberV100", 10000);
        repository.save(member);

        // findById
        Member findMember = repository.findById(member.getMemberId());
        log.info("findMember={}", findMember);
        Assertions.assertThat(findMember).isEqualTo(member);

        // update : money 10000 -> 20000
        repository.update(member.getMemberId(), 20000);
        Member updatedMember = repository.findById(member.getMemberId());
        Assertions.assertThat(updatedMember.getMoney()).isEqualTo(20000);

        // delete
        repository.delete(member.getMemberId());
        Assertions.assertThatThrownBy(() -> repository.findById(member.getMemberId()))
                .isInstanceOf(NoSuchElementException.class);
    }
}

테스트 코드 실행 결과

0개의 댓글