0

[Spring MVC] 게시판 DAO, DAOImpl #6

Last Updated: 2022년 12월 14일

DAO는 Data Access Object (데이터 접근 객체)이며, mapper 에서 작성한 sql 의 결과값을 DAO 로 옮김.
DAO 파일은 interface 파일, DAOImpl 파일은 class 파일이며, interface를 사용하는 이유는 기능별로 통일하고 싶은 것들을 정하는 것이다.

출처: 내 컴퓨터

BoardDAO.java

package kr.co.narrator.board.dao;

import java.util.List;

import kr.co.narrator.board.common.SearchCriteria;
import kr.co.narrator.board.dto.BoardDTO;

/*
 * DAO는 Data Access Object (데이터 접근 객체)
 * mapper 에서 작성한 sql 의 결과값을 DAO 로 옮김.
 * DAO 파일은 interface 파일이고, DAOImpl 파일은 class 파일이다.
 * interface를 사용하는 이유는 기능별로 통일하고 싶은 것들을 정하는 것.
 */
public interface BoardDAO {

	// 게시판 리스트 및 총 갯수
	public List<BoardDTO> boardList(SearchCriteria cri) throws Exception;
	public int boardListCnt(SearchCriteria cri) throws Exception;

	// 게시판 조회 및 조회수 증가
	public BoardDTO boardContent(int seq) throws Exception;
	public int boardContentCount(int seq) throws Exception;

	// 게시판 글쓰기
	public void boardInsert(BoardDTO boardDTO) throws Exception;

}

BoardDAOImpl.java

package kr.co.narrator.board.dao;

import java.util.List;

import javax.inject.Inject;

import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;

import kr.co.narrator.board.common.SearchCriteria;
import kr.co.narrator.board.dto.BoardDTO;

/*
 * @Repository : 스프링 컨테이너가 component-scan에 의해 지정한 클래스를 DAO빈으로 자동 변환
 * SqlSession에서 제공하는 메서드 : selectList, selectOne, selectMap, insert, update, delete
 * SqlSession 은 dataSource-context.xml 에서 빈으로 등록함. 
 */
@Repository
public class BoardDAOImpl implements BoardDAO {

	private final String NS = "kr.co.narrator.board.boardMapper";

	@Inject
	private SqlSession sqlSession;

	// 게시판 리스트 및 총갯수
	@Override
	public List<BoardDTO> boardList(SearchCriteria cri) throws Exception {
		return sqlSession.selectList(NS + ".boardList", cri);
	}
	@Override
	public int boardListCnt(SearchCriteria cri) throws Exception {
		return sqlSession.selectOne(NS + ".boardListCnt", cri);
	}

	// 게시판 조회 및 조회수 증가
	@Override
	public BoardDTO boardContent(int seq) throws Exception {
		return sqlSession.selectOne(NS + ".boardContent", seq);
	}
	@Override
	public int boardContentCount(int seq) throws Exception {
		return sqlSession.update(NS + ".boardContentCount", seq);
	}

	// 게시판 글쓰기
	@Override
	public void boardInsert(BoardDTO boardDTO) throws Exception {
		sqlSession.insert(NS + ".boardInsert", boardDTO);
	}

}