프루트 2022. 10. 14. 14:04
  • 의미 : JDBC를 통해 데이터베이스에 엑세스하는 작업을 캡슐화하고 일반 SQL 쿼리, 저장 프로 시저 및 고급 매핑을 지원하며 모든 JDBC 코드 및 매개 변수의 중복작업을 제거
  • 장점 : 프로그램에 있는 SQL쿼리들을 한 구성파일에 구성하여 프로그램 코드와 SQL을 분리
  • 특징
    • 복잡한 쿼리나 다이나믹한 쿼리에 강함
    • 프로그램 코드와 SQL 쿼리의 분리로 코드의 간결성 및 유지보수성 향상
    • resultType, resultClass등 Vo를 사용하지 않고 조회결과를 사용자 정의 DTO, MAP 등으로 맵핑하여 사용 가능
    • 빠른 개발이 가능하여 생산성이 향상
  • 설정 방법

1.pom.xml

<!-- MyBatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.2.8</version>
</dependency>

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.2.2</version>
</dependency>
<!-- DataSource 설정을 위한 의존 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>4.1.4.RELEASE</version>
</dependency>

2. servlet-context.xml

<!-- DataSource -->
<beans:bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">     <beans:property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
    <beans:property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
    <beans:property name="username" value="scott"/>
    <beans:property name="password" value="tiger"/>
</beans:bean>
<!-- 패키지 이름 -->
<context:component-scan base-package="com.javalec.spring_mvc_board_mybatis" />

<!-- MyBatis -->
    <beans:bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <beans:property name="dataSource" ref="dataSource"></beans:property>
    <beans:property name="mapperLocations" value="classpath:com/javalec/spring_mvc_board_mybatis/dao/mapper/*.xml">
    </beans:property>
</beans:bean>

<beans:bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
    <beans:constructor-arg index="0" ref="sqlSessionFactory"></beans:constructor-arg>
</beans:bean>
  • 파라미터 처리 시 #, $ 차이점 : #은 데이터 형식에 맞게 자동 변환, $는 받은 데이터 형식 그대로 유지