본문으로 바로가기

   

 

Spring Boot에서 Mybatis Oracle 연동을 하는 방법에 대하여 알아보도록 하겠습니다.

간단하게 오라클에서 대표적인 DEPT(부서) 테이블의 deptno, dept, loc을 조회하는 예제로 접근해 보겠습니다.

 

개발환경 

1) InteliJ Community Version

2) Java 1.8

3) Oracle 11g

 

프로젝트 구조

 


Pom.xml

<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.1.4</version>
		</dependency>

		<dependency>
			<groupId>com.oracle.database.jdbc</groupId>
			<artifactId>ojdbc8</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>
    
    <build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<excludes>
						<exclude>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
						</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>

 

필요한 dependency

1) Web

2) Mybatis Framework - Oracle Driver

3) Lombok (필수 아님 Model 객체에서 getter, setter 편리함을 위해 사용)
  - 혹시라도 Lombok 세팅을 안하신 분이 있으시면 세팅을 해주셔야 적용됩니다. (아래 세팅 방법 첨부)

[Spring Boot] InteliJ Lombok 설정 방법

 


myService - model - Dept.class

import lombok.Data;

@Data
public class Dept {
    private String deptno; // 부서번호
    private String dname; // 부서이름
    private String loc; // 지역
}

 

model 패키지를 생성하고 그 안에 Member 객체를 생성하여 변수들을 입력합니다.

 


myService - dao - DeptDao.interface

import com.myBatis.myService.model.Dept;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper // mapping파일에 있는 sql을 인터페이스로 호출
public interface DeptDao {
    public List<Dept> selectList();
}

 

dao 패키지를 생성하고 DeptDao 인터페이스를 생성합니다.

여기서 선언된 추상메소드명(selectList)이 mapping될 id를 가리키게 됩니다. 

즉, mybatis-mapper에서 입력된 id가 selectList인 것을 가리킵니다. 

 


resources - mappers - main.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTO Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.myBatis.myService.dao.DeptDao">
    <select id="selectList" parameterType="com.myBatis.myService.model.Dept" resultType="com.myBatis.myService.model.Dept">
        SELECT deptno
             , dept
             , loc
          FROM DEPT
    </select>
</mapper>

 

resource 패키지 안에 mappers 패키지를 만들고 그 안에 main.xml을 생성합니다.

단순 조회를 할 것이기 때문에 <select>로 입력하였습니다. (수정할 땐 update, 삭제할 땐 delete로 설정)

id는 "selectList", parameterType과 resultType은 위에서 생성했던 Member 객체로 지정해줍니다.

 


resources - application.properties

#Server Port
server.port = 8000

#Oracle DataSource
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@127.0.0.1:1521/xe
spring.datasource.username=user1
spring.datasource.password=root

#Model Location
mybatis.type-aliases-package=com.myBatis.myService.model

#Xml Location
mybatis.mapper-locations=classpath:mappers/*.xml

 

Oracle Driver를 설정해줍니다. username과 password를 본인의 oracle 접속계정에 맞게 잘 설정해주세요.

그리고 model과 xml의 path를 지정해줍니다.

 

(혹시 몰라서 sqlDeveloper를 이용하여 하시는 분들을 위해 계정 설정 방법 링크 첨부하겠습니다.)

[Oracle SQL Developer] 연결 방법


myService - service - DeptService.interface

import com.myBatis.myService.model.Dept;

import java.util.List;

public interface DeptService {
    public List<Dept> selectList();
}

 

myService - service - DeptServiceImpl.class

import com.myBatis.myService.dao.DeptDao;
import com.myBatis.myService.model.Dept;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;

public class DeptServiceImpl implements DeptService {

    @Autowired
    DeptDao deptDao;

    @Override
    public List<Dept> selectList() {
        return deptDao.selectList();
    }

}

 

service 패키지를 생성하고 DeptSerivce interface와 그것을 구현하는 DeptServiceImpl.class를 생성합니다.

위에서 생성했던 DeptDao의 의존성을 받아오고 매핑된 selectList를 return합니다.

 


myService - controller - DeptController.class

import com.myBatis.myService.dao.DeptDao;
import com.myBatis.myService.model.Dept;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class DeptController {

    @Autowired
    DeptDao deptDao;

    @GetMapping("/main")
    public List<Dept> main() {
        List<Dept> list = deptDao.selectList();
        return list;
    }
}

 

변수 list에 selectList에서 조회된 쿼리의 결과를 저장하고 그것을 return 해줍니다.

 


실제 쿼리 결과

 

실행 결과

 

입력한 쿼리의 실행결과가 데이터로 잘 받아온 것을 확인할 수 있습니다.

아주 간단하게 dept 테이블의 정보를 조회해보았습니다. 이상으로 Spring boot에서 mybatis oracle 연동을 마치도록 하겠습니다.