Spring과 MyBatis를 연동하기 위해 기존 설정에서 몇 가지를 추가해 주었다
<!-- mybatis-spring 연동 라이브러리 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.3</version>
</dependency>
<!-- mybatis 라이브러리 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<!-- spring에서 database 처리와 transaction 처리 라이브러리 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.3.25</version>
</dependency>
<!-- spring에서 database 처리 라이브러리-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.25</version>
</dependency>
application-context
- 전체 계층구조에서 최상단에 위치한 컨텍스트
- 서로 다른 서블릿 컨텍스트에서 공유해야하는 Bean들을 등록해놓고 사용
- 웹 애플리케이션 전체에 적용 가능한 프로퍼티, DB 연결, 로깅 기능 등에 이용
<!-- DB에 관한 설정 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring/application-context.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
: JDBC 명세의 일부분이면서 일반화된 연결 팩토리
: DB와 관계된 connection정보를 담고 있으며 bean으로 등록하여 인자를 넘겨줌
# db setting
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mydb?serverTimeZone=Asia/Seoul
jdbc.username=root
jdbc.password=1234
jdbc.initialSize=5
jdbc.maxActive=20
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<!-- Database 설정 -->
<!-- DB 설정파일 loading -->
<bean id="propertyConfigure" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:properties/jdbc.properties</value> <!-- classpath : src/main/java -->
</list>
</property>
</bean>
<!-- DBMS(DataBase Management System) : DataSource를 bean으로 등록 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="initialSize" value="${jdbc.initialSize}" />
<property name="maxActive" value="${jdbc.maxActive}" />
<property name="minIdle" value="${jdbc.initialSize}"></property> <!-- 최소사이즈를 초기값으로 설정 -->
<property name="maxWait" value="3000" /> <!-- 대기시간이 최대3초 -->
<property name="poolPreparedStatements" value="true" />
<property name="maxOpenPreparedStatements" value="50" /> <!-- 동시에 접속했을 때 가져갈 수 있는 최대 개수 -->
</bean>
<!-- mybatis 설정 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" /> <!-- ref: refernce. 참조 -->
<property name="mapperLocations" value="classpath:sqls/*.xml" /> <!-- mapper의 경로 -> sqls경로 안에 있는 모든 xml파일 -->
</bean>
<!-- sqlSession 취득 -->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
<constructor-arg index="1" value="SIMPLE" />
</bean>
<!-- jdbc 설정 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
</beans>
: SQL 쿼리문을 작성할 mapper를 추가한다 ( xml파일 이용 )
- namespace : 여러개의 SQL문을 묶는 용도로 사용 (경로)
- parameterType : SQL문의 입력 parameter
- resultType : select문 실행 결과를 담을 객체
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="경로">
<!-- sql 쿼리문 작성 -->
<select id="" parameterType="" resultType="">
<!-- select문 작성-->
</select>
</mapper>
인터페이스를 사용한 방법은 아래 블로그를 참조
https://codevang.tistory.com/263
https://velog.io/@arielgv829/Spring-SpringJDBC
https://hoonmaro.tistory.com/31