[java] MyBatis에서 테이블 삭제하기

MyBatis는 자바 개발자들이 데이터베이스와 상호작용하기 위해 사용되는 강력한 ORM(Object-Relational Mapping) 프레임워크입니다. 이번 포스트에서는 MyBatis를 사용하여 테이블을 삭제하는 방법에 대해 알아보겠습니다.

1. XML 매퍼 파일 작성하기

먼저, 삭제할 테이블에 대한 XML 매퍼 파일을 작성해야 합니다. XML 매퍼 파일은 MyBatis에서 SQL 쿼리를 정의하고 실행하는 역할을 합니다. 다음은 테이블 삭제를 위한 XML 매퍼 파일의 예시입니다.

<!-- DeleteTable.xml -->
<mapper namespace="com.example.mapper.TableMapper">
  
  <!-- 테이블 삭제 쿼리 정의 -->
  <delete id="deleteTable">
    DELETE FROM tablename
    WHERE id = #{id}
  </delete>
  
</mapper>

위의 예시에서, deleteTable이라는 id를 가진 <delete> 요소 안에 테이블 삭제를 위한 SQL 쿼리를 작성했습니다. #{id}는 삭제할 행의 식별자를 나타냅니다.

2. 테이블 삭제 메서드 작성하기

이제 XML 매퍼 파일을 사용하여 테이블을 삭제할 메서드를 작성해야 합니다. 해당 메서드는 MyBatis와 연결된 DAO(Data Access Object) 클래스에 작성되어야 합니다. 아래는 테이블 삭제를 위한 예시 코드입니다.

// TableDao.java
public interface TableDao {

  void deleteTable(int id);
  
}
// TableDaoImpl.java
@Repository
public class TableDaoImpl implements TableDao {
  
  private final SqlSession sqlSession;
  
  public TableDaoImpl(SqlSession sqlSession) {
    this.sqlSession = sqlSession;
  }
  
  @Override
  public void deleteTable(int id) {
    sqlSession.delete("com.example.mapper.TableMapper.deleteTable", id);
  }
  
}

위의 예시 코드에서 deleteTable() 메서드는 MyBatis의 SqlSession 객체를 사용하여 테이블 삭제 쿼리를 실행합니다. TableMapper.deleteTable은 매퍼 파일의 namespace와 delete id를 참조합니다.

3. 테이블 삭제 호출하기

마지막으로, 테이블 삭제 메서드를 호출하여 실제로 테이블을 삭제할 수 있습니다. 이는 테이블을 삭제하고자 하는 시점과 방법에 따라 다를 수 있습니다. 아래는 삭제 메서드의 호출 예시입니다.

// TableController.java
@RestController
public class TableController {
  
  private final TableDao tableDao;
  
  public TableController(TableDao tableDao) {
    this.tableDao = tableDao;
  }

  @DeleteMapping("/tables/{id}")
  public ResponseEntity<String> deleteTable(@PathVariable int id) {
    tableDao.deleteTable(id);
    return ResponseEntity.ok("Table deleted successfully");
  }
  
}

위의 예시 코드는 Spring Framework를 사용한 RESTful API에서 테이블 삭제를 처리하는 방법을 보여줍니다. /tables/{id}로 DELETE 요청이 들어올 때 deleteTable() 메서드가 호출되어 테이블 삭제 작업을 수행합니다.

이제 MyBatis에서 테이블을 삭제하는 방법을 알게 되었습니다. MyBatis를 사용하여 다양한 데이터베이스 작업을 수행할 수 있으며, 편리하고 강력한 ORM 프레임워크로서 개발 생산성을 향상시킬 수 있습니다.

참고 자료