본문 바로가기
Spring

[스프링의 정석] MyBatis, DAO작성

by 리잼 2023. 4. 24.
반응형

1. MyBatis란

  • 자바코드 <- -> SQL( XML )
  • SQL Mapping Framework
  • 자바 코드로부터 SQL문을 분리해서 관리
  • 매개변수 설정과 쿼리 결과를 읽어오는 코드를 제거
  • 작성할 코드가 줄어서 생산성 향상 & 유지 보수 편리

2. SqlSessionFactoryBean과 SqlSessionTemplate

  • SqlSessionFactory - SqlSession을 생성해서 제공
  • SqlSession - SQL 명령을 수행하는데 필요한 메서드 제공
  • SqlSessionFactoryBean - SqlSessionFactory를 Spring에서 사용하기 위한 빈
  • SqlSessionTempleate - SQL 명령을 수행하는데 필요한 메서드 제공. thread-safe

3. SqlSession의 주요 메서드

메서드 설명
int insert(String statement)
int insert(String statement, Object parameter)
insert문을 실행하고, insert된 행의 갯수를 반환
int delete(String statement)
int delete(String statement, Object parameter)
delete문을 실행하고, delete된 행의 갯수를 반환
int update(String statement)
int update(String statement, Object parameter)
update문을 실행하고, update된 행의 갯수를 반환
T selectOne(String statement)
T selectOne(String statement, Object parameter)
하나의 행을 반환하는 select에 사용 paramter로 SQL에 binding될 값 제공
List selectList(String statement)
List selectList(String statement, Object parameter)
여러 행을 반환하는 select에 사용 paramter로 SQL에 binding될 값 제공
Map selectMap(String statement, String keyCol)
Map selectMap(String statement, String keyCol, Object parameter)
여러 행을 반환하는 select에 사용 keyCol에 Map의 Key로 사용할 컬럼 지정

Dao 작성

1. DB 테이블 생성

2. Mapper XML & DTO 작성

3. DAO 인터페이스 작성

4. DAO 인터페이스 구현 & 테스트

DTO란 ( Data Transfer Object )

  • 계층간의 데이터를 주고 받기 위해 사용되는 객체

DTO동작 과정

실습

BoardDaoImplTest.java
테스트 결과

Mybatis #{}, ${} 차이

  • #{} - PreparedStatement 사용 / SQL Injection 방지
  • ${} - Statement 사용

XML의 특수 문자 처리

  • XML내의 특수문자( <, >, &, ...) 는 &lt &gt;로 변환 필요
    또는 특수문자가 포함된 쿼리를 <![CDATA[와]]> 로 감싼다

반응형