1 minute read

test 코드 작성

  • 게시글 번호로 조회하여 게시글 수정
@Test
@DisplayName("게시글 수정 테스트")
public void updateBoardTest() {
    int result = 0;
    Board board = service.findBoardByNo(161);
    Board findBoard = null;
    
    board.setTitle("mybatis 게시글 - 수정");
    board.setContent("mybatis 게시글 내용 등록 - 수정");
    board.setOriginalFileName(null);
    board.setRenamedFileName(null);
    
    result = service.save(board); // 저장하고
    findBoard = service.findBoardByNo(board.getNo()); // 저장한 거 다시 확인. 해당 no(pk)값으로 조회
    
    assertThat(result).isGreaterThan(0);
    assertThat(findBoard).isNotNull().extracting("title").isEqualTo(board.getTitle());
}

service 코드 작성

public int save(Board board) {
    int result = 0;
    SqlSession session = getSession();
    
    if(board.getNo() != 0) { 
        // update
        result = dao.updateBoard(session, board);
    } else {
        // insert
        result = dao.insertBoard(session, board);
    }
    
    if(result > 0) {
        session.commit();
    } else {
        session.rollback();
    }
    
    session.close();
    
    return result;
}

dao 코드 작성

public int updateBoard(SqlSession session, Board board) {
    return session.update("boardMapper.updateBoard", board);
}

쿼리문 작성

  • 방법 1) 동적 쿼리 사용하지 않고 작성
  • 방법 2) 동적 쿼리 사용하여 작성
    • OriginalFileName / RenamedFileName을 지정하지 않을 경우 null로 수정되기 때문에 동적 쿼리 사용

방법 1

<update id="updateBoard" parameterType="Board">
    <!-- 동적쿼리 사용 X : 기존 JDBC에서 사용하던 쿼리문을 사용하여 update -->
    UPDATE BOARD 
        SET TITLE = #{ title },
            CONTENT = #{ content },
            ORIGINAL_FILENAME = #{ originalFileName },
            RENAMED_FILENAME = #{ renamedFileName },
            MODIFY_DATE = SYSDATE 
    WHERE NO = #{ no }
</update>

-

방법 2

<update id="updateBoard" parameterType="Board">
    <!-- 다중 if 사용 -->
    UPDATE BOARD 
    SET 
        <if test="title != null">
            TITLE = #{ title },
        </if>
        <if test="content != null">
            CONTENT = #{ content },
        </if>
        <if test="originalFileName != null">
            ORIGINAL_FILENAME = #{ originalFileName },
        </if>
        <if test="renamedFileName != null">
            RENAMED_FILENAME = #{ renamedFileName },
        </if>
        MODIFY_DATE = SYSDATE 
    WHERE NO = #{ no }
    
    <!-- set 사용 -->
    UPDATE BOARD
    <set>
        <if test="title != null">
            TITLE = #{ title },
        </if>
        <if test="content != null">
            CONTENT = #{ content },
        </if>
        <if test="originalFileName != null">
            ORIGINAL_FILENAME = #{ originalFileName },
        </if>
        <if test="renamedFileName != null">
            RENAMED_FILENAME = #{ renamedFileName },
        </if> 
        MODIFY_DATE = SYSDATE
    </set>
    WHERE NO = #{ no }
   
    
    <!--  trim 사용  -->
    UPDATE BOARD
    <trim prefix="SET" suffixOverrides=",">
        <if test="title != null">
            TITLE = #{ title },
        </if>
        <if test="content != null">
            CONTENT = #{ content },
        </if>
        <if test="originalFileName != null">
            ORIGINAL_FILENAME = #{ originalFileName },
        </if>
        <if test="renamedFileName != null">
            RENAMED_FILENAME = #{ renamedFileName },
        </if> 
        MODIFY_DATE = SYSDATE
    </trim>
    WHERE NO = #{ no }
</update>

Categories:

Updated: