Spring/spring boot

Spring boot oracle db 연동 , spring boot oracle jdbc 설정 - 삽질중인 개발자

개발 N년차 2019. 12. 16. 22:43
반응형

Spring boot에서 오라클 DB 연동하기 + Mybatis 설정하기

스프링 부트에서 oracle과 mybatis를 설정하는 방법입니다.

spring boot oracle datasource를 설정하기 전에 필요한 jar 파일을 다운로드 합니다.

 

1. pom.xml에 추가

		<!-- mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.4.0</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.3.0</version>
		</dependency>

		<!-- oracle jdbc -->
		<dependency>
			<groupId>com.oracle.jdbc</groupId>
			<artifactId>ojdbc8</artifactId>
			<version>12.2.0.1</version>
		</dependency>

 

메이븐 다운로드가 완료된후 m2 폴더에 가보면

C:\Users\유저명\.m2\repository\com\oracle\jdbc\ojdbc8\12.2.0.1 에 가면 ojdbc jar는 다운로드가 안되어 있음. 

 

ojdbc는 다운로드가 안되니까 사설 레파지토리를 사용해서 다운하는 방법도 있지만 그냥 jar 수동으로 다운받아서 옮겨주는게 편함.

 

https://mvnrepository.com/artifact/com.oracle.jdbc/ojdbc8/12.2.0.1에 들어가서 jar 다운로드. 

빨간색 동그라미 클릭

 

메이븐 저장소에서 jar를 직접 다운로드 후 C:\Users\유저명\.m2\repository\com\oracle\jdbc\ojdbc8\12.2.0.1 폴더에 jar를 옮겨주면 된다.

 

2. properties 설정

spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521/xe
spring.datasource.username=유저이름
spring.datasource.password=비밀번호

 

 

3. bean 등록

	@Bean
	public SqlSessionFactory sqlSessionFactory(DataSource datasource) throws Exception {
		SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();
		sqlSessionFactory.setDataSource(datasource);
        //mapper 워치에 따라서 classpath*:static/mappers/**/*Mapper.xml 이부분을 조정
        sqlSessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:static/mappers/**/*Mapper.xml"));
		return sqlSessionFactory.getObject();
	}
	@Bean
	public SqlSessionTemplate sqlSession(SqlSessionFactory sqlSessionFactory) {
		return new SqlSessionTemplate(sqlSessionFactory);
	}	
    

 

classpath*:   이부분이  src/main/resources 부분이다.

나머지는 경로를 써주면 됩니다.

 

 

 

 

 

 

 

 

 

 

4. Controller , Service , DAO 만들기

@Controller
@RequestMapping("user")
public class UserController {

	@Autowired
	private UserService userService;
	
	
	@GetMapping("/mypage")
	public String mypage() {
		
		System.out.println(userService.getUserInfo(1));
		
		
		return "user/mypage";
	}
}

@Service
public class UserService {

	@Autowired
	private UserDAO userDAO;

	public Map<String,Object> getUserInfo(int userSeq) {
		return userDAO.getUserInfo(userSeq);
	}
}
@Repository
public class UserDAO {

	@Autowired
	private SqlSessionTemplate sqlSessionTemplate;

	public Map<String, Object> getUserInfo(int userSeq) {
		// userMapper 라는 부분과 5단계에 있는 mapper.xml 파일의 namespace를 동일하게 맞춰준다
        //.getUserInfo 와 5단계에 있는 <select id= 부분를 동일하게 맞춰준다.
        return sqlSessionTemplate.selectOne("userMapper.getUserInfo",userSeq);
        
	}
	
}

 

 

5. Mapper.xml 만들기

<?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="userMapper">
	<select id="getUserInfo" resultType="Map" parameterType="Int">
		SELECT * FROM t_user
	</select>

</mapper>


6. 테스트

 

 

만약 Mapped Statements collection does not contain ~~~ : 에러가 다음 링크 참조.

 

 

 

 

 

 

반응형