본문으로 바로가기

마이바티스 CRUD(삭제)

category 데이터베이스/마이바티스 2019. 1. 9. 16:36
마이바티스 CRUD(삭제)

 

마이바티스 CRUD중 삭제에 대해서 알아봅시다.

 

앞서 삽입 수정 조회에 대해 알아보았습니다.

 

우선 전통적인 삭제에 대한 JDBC 코드를 보면

 

public Integer deleteComment(Long commentNo) {
  Connection conn = null;
  PreparedStatement stmt = null;

  try {
   conn = this.getConnection();

   StringBuilder sql = new StringBuilder("");
   sql.append("DELETE FROM comment ");
   sql.append("WHERE comment_no = ? ");
   stmt = conn.prepareStatement(sql.toString());
   stmt.setLong(1, commentNo);
   return stmt.executeUpdate();
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   try {
    stmt.close();
   } catch (SQLException e) {
   }
   try {
    conn.close();
   } catch (SQLException e) {
   }
  }
  return null;
 }

 

빨간색 코드 부분은 앞서 봤듯이 데이터베이스 연결 생성 부분입니다.

 

이는 마이바티스로 변환 시 SqlSession 객체를 생성하는 코드로 변환 됩니다.

 

초록색 코드 부분은 앞서 봤듯이 SQL을 준비하고 PreparedStatement 객체를 생성하는 부분입니다.

 

이는 매핑 구문으로 분리가 됩니다.

 

파란색 코드 부분은 앞서 봤듯이 PreparedStatement 객체에 파라미터 설정 후 실행 하는 부분입니다.

 

이는 마이바티스 코드에서 update를 호출 하는 부분입니다.

 

우선 매핑 구문으로 분리를 시켜야 합니다.

 

이를 위해서

 

앞서 만들었던 CommentMapper.xml 을 가져와 이 곳에 작성을 합니다.

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"
http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="ldg.mybatis.repository.mapper.CommentMapper">

 <delete id="deleteComment" parameterType="long">
  DELETE FROM comment
  WHERE comment_no = #{commentNo};
 </delete>
</mapper>

 

 

<delete> 태그로 매핑 구문을 만들어 줍니다. 즉 분리해주는 역할입니다.

 

속성은 id로 deleteComment(이는 나중에 쓰임) 파라미터 타입은 long으로 지정해 줍니다.

 

마찬가지로 resultType은 없고 파라미터 타입만 있습니다. 또한 수정과 달리 필요한 파라미터가 댓글 번호만

 

필요하기 때문에 long을 지정 해주었습니다. 수정 과 같이 여러 파라미터를 필요 할 시에는 Comment객체를 

 

지정해주면 됩니다.

 

JDBC코드에서 SQL 준비 구문인 DELETE FROM comment WHERE comment_no = #{commentNo} 로 작성해 줍니다.

 

이로써 매핑 구문을 분리 한겁니다.

 

그 다음 매핑 구문을 사용하는 마이바티스 코드를 작성해야합니다.

 

public Integer deleteComment(Long commentNo) {
  SqlSession sqlSession = getSqlSessionFactory().openSession();
  try {
   String statement = "ldg.mybatis.repository.mapper.CommentMapper.deleteComment";
   int result = sqlSession.delete(statement, commentNo);
   if (result > 0) {
    sqlSession.commit();
   }
   return result;
  } finally {
   sqlSession.close();
  }
 }

 

 

빨간 코드는 SqlSession 객체를 얻는 부분으로 이 부분이 가장 중요합니다. 이 객체를 이용해서 매핑 구문

 

호출하게 됩니다.

 

초록색 코드는 마이바티스 API(delete)를 사용하여 데이터를 삭제합니다. 이는 JDBC코드에서 봤듯이 파라미

 

터 지정후 executeQurey 를 호출 하여 실행 하는 부분입니다.

 

delete API의 첫 파라미터에 매핑 구문 정보를 넣고 두 번째 파라미터에는 파라미터 정보를 넣어 호출 해주

 

주면 매핑 구믄으로 가서 해당 SQL을 실행하게 되는 겁니다.

 

나머지 코드는 자원을 해체해주는 sqlSession.close()입니다.

 

따라서 마지막으로 이를 사용하여 데이터를 삭제하는 실질적 코드를 봅시다.

 

public class CommentSessionRepositoryTest {

 public static void main(String[] args) {

   Long commentNo = 1L;

CommentSessionRepository commentSessionRepository =

new CommentSessionRepository();

Integer result = commentSessionRepository.deleteComment(commentNo);

   System.out.println(result);
 }
}

 

위 코드에서 해당 마이바티스 코드 객체 생성 후 마이바티스 코드의 메소드 호출하여 매핑 구문을 불릅니다.

 

앞서 말했듯이 이해를 돕고자 아래에서 위로 코드를 살펴 보시면 좀더 이해하기 수월할 겁니다.

 

즉 위에서 마이바티스 코드를 호출 합니다. 따라서 마이바티스 코드 부분으로 가면 deleteComment 메소드가

 

있고 이를 실행 하는 것이므로 매핑 구문인 CommentMapper.xml로 가서 SQL구문을 실행 하게 되는거죠.

 

이로써 마이바티스 CRUD에 대해 알아보았습니다.

 

감사합니다..