스프링 mvc - 블로그 만들기/dao클래스 생성

2024. 9. 27. 16:42복습/스프링-게시판만들기

package v2.mvc.spring.blog.dao;

import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

@Repository
public class BlogDAO {
	@Autowired
	SqlSessionTemplate sqlSessionTemplate;

}

 

SqlSessionTemplate은 MyBatis에서 SQL 세션을 관리하고 실행하기 위해 제공되는 클래스입니다.

주로 스프링 프레임워크와 함께 사용되며, MyBatis의 SqlSession을 스레드 세이프하게 관리할 수 있게 도와줍니다. MyBatis는 SQL을 XML이나 애노테이션을 통해 정의하고, 이 SQL을 실행하기 위해 SqlSession을 사용하는데, SqlSessionTemplate은 이 과정을 더 쉽게 해줍니다.

 

 

 

 

package v2.mvc.spring.blog.dao;

import java.util.Map;

import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

@Repository
public class BlogDAO {
	@Autowired
	SqlSessionTemplate sqlSessionTemplate;
	
	public int insert(Map<String, Object> map) {
		int result = this.sqlSessionTemplate.insert("TB_BLG_CONT.insert", map);
		if(result>0 && map.containsKey("seq_blg_cont")) {
			return (Integer) map.get("seq_blg_cont");
		}
	return -1;
	
	}

}

 

이 코드는 MyBatis와 스프링을 이용해 데이터베이스에 데이터를 삽입(insert)하는 기능을 담당하는 BlogDAO 클래스입니다. DAO(Data Access Object) 클래스는 데이터베이스와의 상호작용을 담당하는 계층입니다.

 

 

public int insert(Map<String, Object> map) {
	int result = this.sqlSessionTemplate.insert("TB_BLG_CONT.insert", map);

 

  • insert(Map<String, Object> map): 이 메서드는 map 형태로 전달된 데이터를 이용해 데이터베이스에 레코드를 삽입하는 기능을 합니다. 여기서 map은 삽입할 데이터가 키-값 쌍으로 포함된 자료구조입니다.
  • sqlSessionTemplate.insert: MyBatis의 insert 메서드를 통해 SQL 문을 실행합니다. "TB_BLG_CONT.insert"는 MyBatis 매퍼 파일의 TB_BLG_CONT 네임스페이스에 정의된 insert SQL 문을 참조하는 식별자입니다. MyBatis 매퍼 XML 파일에 해당 SQL이 정의되어 있어야 합니다.

 

 

	if(result>0 && map.containsKey("seq_blg_cont")) {
		return (Integer) map.get("seq_blg_cont");
	}
return -1;

 

 

  • result > 0: 삽입된 행의 수가 1 이상이면, 즉 데이터 삽입이 성공했을 때 조건을 만족합니다.
  • map.containsKey("seq_blg_cont"): 삽입된 데이터에 "seq_blg_cont"라는 키가 존재하는지 확인합니다. 이 키는 삽입된 레코드의 기본 키(혹은 시퀀스 값)일 가능성이 큽니다.
  • return (Integer) map.get("seq_blg_cont");: map에서 "seq_blg_cont" 키에 해당하는 값을 가져오고, 이를 Integer로 캐스팅하여 반환합니다. 이 값은 주로 데이터베이스의 삽입된 레코드의 기본 키를 반환하는 데 사용됩니다.
  • return -1;: 삽입이 실패하거나, "seq_blg_cont" 키가 없을 경우 -1을 반환합니다. 이는 삽입 실패를 나타내기 위한 기본값입니다.

 

전체 동작 요약

 

  1. 클라이언트가 insert 메서드를 호출하고 데이터가 담긴 map을 전달합니다.
  2. MyBatis의 sqlSessionTemplate.insert() 메서드를 사용해 데이터베이스에 데이터를 삽입합니다.
  3. 삽입이 성공하면, 삽입된 데이터의 시퀀스나 기본 키인 "seq_blg_cont"를 반환합니다.
  4. 삽입이 실패하거나 해당 키가 존재하지 않으면 -1을 반환합니다.

이 코드는 데이터베이스에 데이터를 삽입하고, 삽입된 레코드의 기본 키를 반환하는 표준적인 DAO 클래스입니다.