ch4-1 - MyBatis의 소개와 설정
- MyBatis 소개
- SqlSessionFactoryBean - SqlSession을 생성하기 위해 bean으로 등록
- SqlSessionTemplate - bean등록 후, SQL 메서드를 Dao에서 사용
- SqlSessionTemplate의 메서드 - insert, update, delete, selectOne, selectList, selectMap
- mybatis-config.xml - MyBatis 설정파일, 별명 지정
MyBatis란?
- SQL MAPPING Framework
- SQL을 별도의 XML파일로 분리해서, 자바코드로 사용.
- 자바 코드로 SQL문을 분리해서 관리.
- 매개변수 설정과 쿼리 결과를 읽어오는 코드를 제거.
(setString(), setInt(), getInt() ...를 제거)
- 작성할 코드가 줄어서 생산성 향상 & 유지 보수 편리.
- Spring 5.0이상을 쓸 때 myBatis-spring은 2.0이상, MyBatis는 3.5이상을 써야 한다.
SqlSessionFactoryBean과 SqlSessionTemplate
- mybatis가 제공 - interface
- SqlSessionFactory - SqlSession을 생성해서 제공.
- SqlSession - SQL명령을 수행하는데 필요한 메서드를 제공
- mybatis-spring이 제공 - class
- SqlSessionFactoryBean - SqlSessionFactory를 Spring에서 사용하기 위한 빈.
- SqlSessionTemplate - SQL명령을 수행하는데 필요한 메서드 제공. thread-safe(멀티쓰레드에 안전).
따라서 SqlSessionTemplate를 이용해서 Dao를 작성한다. 그리고 멀티쓰레드에 안전하므로 각각의 Dao는 SqlSessionTemplate를 공유 가능.
- root-context.xml에 저장
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:mapper/*Mapper.xml"/>
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg ref="sqlSessionFactory"/>
</bean>
SqlSession의 주요 메서드
- int insert() - insert, delete, update는 DB에 영향을 준 row의 수를 반환(성공은 1, 실패는 0)
- int delete()
- int update()
- T selectOne() - 하나의 행을 가져올 때
- List selectList() - 여러개의 행
- Map<K,V> selectMap() - 여러개의 행
typeAliases로 이름 짧게 하기
- mybatis-config.xml에 작성.
java.lang.Integer --> int (기본 설정 되어 있음)
com.fastcampus.ch4.domain.BoardDto --> BoardDto
- 별명은 대소문자 구별 X, 실제이름은 대소문자 구분 O.