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를 이용하여 하시는 분들을 위해 계정 설정 방법 링크 첨부하겠습니다.)
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 연동을 마치도록 하겠습니다.
'1. 웹개발 > 1_2_3 Spring Boot' 카테고리의 다른 글
[Spring Boot] JPA 설정 방법 (0) | 2020.03.08 |
---|---|
[Spring Boot] InteliJ Lombok 설정 방법 (1) | 2020.03.08 |
[Spring Boot] initializer 설정 방법 (0) | 2020.03.08 |
[JPA] JPQL의 문법과 파라미터 바인딩 (0) | 2020.02.10 |