<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>2.7.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:XE"/>
<property name="username" value="agent"/>
<property name="password" value="1234"/>
</bean>
<!-- 커넥션 풀 생성 -->
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<constructor-arg ref="hikariConfig"/>
<!-- 히카리 컨피그를 데이터소스 생성하는데에 사용 (객체 주입) -->
</bean>
<!-- db연결 (sqlSessionFactory=마이바티스) -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!-- 데이터소스를 세션팩토리 생성하는데에 사용 (객체 주입) -->
</bean>
<!-- springcontainer에게 매퍼 인식 -->
<mybatis-spring:scan base-package="org.zerock.mapper"/>
<?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="org.zerock.mapper.TimeMapper">
<select id="getTime" resultType="string">
SELECT sysdate FROM dual
</select>
</mapper>
package org.zerock.mapper;
public interface TimeMapper {
public String getTime();
}
package org.zerock.sample;
import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.zerock.mapper.TimeMapper;
import lombok.extern.log4j.Log4j;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@Log4j
public class DataSourceTests {
@Autowired
private TimeMapper timeMapper;
@Test
public void test() {
log.info(timeMapper.getTime());
}
}
// 결과
//INFO : org.zerock.sample.DataSourceTests - 2025-04-17 15:16:32.0
//INFO : org.springframework.context.support.GenericApplicationContext - Closing org.springframework.context.support.GenericApplicationContext@f2ff811: startup date [Thu Apr 17 15:16:32 KST 2025]; root of context hierarchy
//INFO : com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated...
//INFO : com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed.


TimeMapper의 namespace와 같은 경로여야됨!!!!!

즉 Mapper java 인터페이스를 등록하고 이름을 통해 Mapper xml 호출 가능!!