TDD / Mybatis - 게시글 삭제
test 코드 작성
- 게시글의 상태가 Y인 것을 N으로 변경
@Test
@DisplayName("게시글 삭제")
public void deleteTest() {
int result = 0;
Board board = null;
result = service.delete(161);
board = service.findBoardByNo(161); // status: N
assertThat(result).isPositive().isEqualTo(1);
assertThat(board).isNull(); // status: N이면 조회되지 않기 때문에 null이라고 예상함
}
service 코드 작성
public int delete(int no) {
int result = 0;
SqlSession session = getSession();
result = dao.updateStatus(session, no, "N"); // "N": 변경할 status 값도 같이 dao에 넘겨주기
if(result > 0) {
session.commit();
} else {
session.rollback();
}
session.close();
return result;
}
dao 코드 작성
- 파라미터로 넘겨줄 값이 int / string으로 자료형 2개
- 하나로 맞춰서 넘길 수 없기 때문에 HashMap 사용
public int updateStatus(SqlSession session, int no, String status) {
Map<String, Object> map = new HashMap<>();
map.put("no", no);
map.put("status", status);
return session.update("boardMapper.updateStatus", map);
}
쿼리문 작성
- 매개값으로 받은 N으로 상태값 변경
<update id="updateStatus" parameterType="map">
UPDATE BOARD
SET STATUS = #{ status }
WHERE NO = #{ no }
</update>