7. 매퍼 어노테이션


  • 기존 스프링에서는 DAO 클래스에 @Repository 선언
    • 해당 클래스가 DB와 통신하는 클래스임을 명시
  • 마이바티스의 매퍼 어노테이션 지정 시, XML mapper에서 메서드의 이름과 일치하는 SQL문을 찾아 실행
    • mapper 영역은 DB와 통신, SQL쿼리를 호출하는 것이 전부이며 로직은 필요하지 않다

DAO

@Mapper
public interface BoardDAO {
  public int insertBoard(BoardVO vo);
  public List<BoardVO> selectAll(SearchVO searchVo);
  public int selectTotalRecord(SearchVO searchVo);
  public int updateReadCount(int no);
  public BoardVO selectByNo(int no);
  public int updateBoard(BoardVO vo);
  public int deleteBoard(BoardVO vo);
  public List<BoardVO> selectMainNotice();
}

board.xml

<mapper namespace="com.it.herb.board.model.BoardDAO">
  <insert id="insertBoard" parameterType="boardVO">
    <selectKey keyProperty="no" resultType="int" order="BEFORE">
      select board_seq.nextval from dual 
    </selectKey>
    insert into board(no,name, pwd, title, email, content)
    values(#{no} ,#{name}, #{pwd}, #{title}, #{email}, #{content})
  </insert>

application.properties

# DataBase
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@host:1521:xe
spring.datasource.username=name
spring.datasource.password=pw
spring.datasource.hikari.connection-test-query=SELECT sysdate FROM dual


#mapper location settings
mybatis.config-location=classpath:/config/mybatis/oracle/mybatis-config.xml
mybatis.mapper-locations=classpath:/config/mybatis/mapper/oracle/*.xml
mybatis.type-aliases-package=패키지명

#MyBatis
mybatis.configuration.map-underscore-to-camel-case=true