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 ~~~ : 에러가 다음 링크 참조.
반응형