본문 바로가기
SpringBoot/(책)스프링부트 시작하기

[springboot ] 5. Spring-Boot에 mapper 만들기

by 평범한kiki 2023. 4. 22.

* Mybatis 는 DAO를 만드는 것보다 SqlSessionDaoSupport나 SqlSessionTemplate를 사용 권장

- Mybatis 스프링 연동 모듈은 다른 빈에 직접 주입할 수 있는 매퍼를 생성 가능

- 매퍼 사용하면 DAO를 만들지 않고 인터페이지 이용하여 개발하여 편리

 

1. /board/src/main/java/board/board/mapper/BoardMapper.java 생성

package board.board.mapper;

import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import board.board.dto.BoardDto;

//mybatis는 dao를 만드는것보다 SqlSessionDaoSupper, SqlSessionTemplate를 사용하기를 권장한다.
//이렇게함으로써 mybatis 스프링 연동 모듈은 다른빈에 직접 주입할 수 있는 매퍼를 생성할 수 있다
//또한 매퍼를 사용하면 일일이 DAO를 만들지 않고 인터페이스만을 이용해서 편하게 개발 가능
//mybatis 매퍼인터페이스임을 선언
@Mapper
public interface BoardMapper {

	//interface이기때문에 메소드 이름과 반환 형식만 지정.
    //여기서 지정한 메소드 이름은 사용할 sql id 이름과 동일해야 한다.
	List<BoardDto> selectBoardList() throws Exception;

	void insertBoard(BoardDto boardDto) throws Exception;

	BoardDto selectBoardDetail(int boardIdx) throws Exception;

	void updateHitCount(int boardIdx) throws Exception;

	void updateBoard(BoardDto boardDto) throws Exception;

	void deleteBoard(BoardDto boardDto) throws Exception;
	
}

2. /resources/mapper/board/sql-board.xml

- 사용할 sql id 는 mapper에서 지정한 메소드명과 동일해야 한다.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
  <mapper namespace="board.board.mapper.BoardMapper">
	  <select id="selectBoardList" resultType="board.board.dto.BoardDto">
		  <![CDATA[ 
		    SELECT board_idx
		         , title
		         , hit_cnt
		         , DATE_FORMAT(created_datetime, '%Y.%m.%d %H:%i:%s') AS created_datetime
		      FROM web_db.t_board tb
		     WHERE deleted_yn = 'N'
		     ORDER BY board_idx DESC 
		  ]]>
	  </select>
  </mapper>