아직 Gradle Project가 생성되지 않았으면 아래의 링크를 먼저 하고오길 바란다.
이번 게시물에서는 DB의 데이터 값을 Select 하여 화면에 띄워보겠다.
이전 게시물에서는 Controller만 생성하여 화면에 문자열을 출력하는 예제를 해보았다.
이번에는 DB에 접근하기 위해 아래의 순서에 따라 Class와 Interface가 연결될 것이다.
Controller (Class) → Service (Interface) → ServiceImpl (Class) → Mapper (Interface) → XML
순차적으로 전송된 후 역순으로 데이터를 가져오게 된다.
일단 파일 구조는 아래와 같다.
먼저 DB에 접근하기 위해 필요한 Gradle dependencies 들을 추가해 준다.
앞에서 썼던 spring-boot-stater-web 과 추가적으로
mybatis-spring-boot-stater
spring-boot-stater-jdbc
를 추가한다.
가장 아래의 compile fileTree(dir: 'libs', include: ['*.jar'])는 새로 만든 폴더 libs 안에 있는 jar파일에 의존성을 주입해 사용하기 위하여 추가하였다.
이제 위의 2개의 jar파일을 사용할 수 있다.
위의 build.gradle 파일 설정을 완료했다면 자신이 접속할 DB정보를 설정한다.
DB설정은 [src/main/resources] - [application.properties] 파일을 열고 위의 코드와 같이 DB정보를 입력해준다.
그 후, mybatis를 사용하기 위하여 [src/main/java] - [config] - [MybatisSimpleConfig.java] 를 수정해준다.
위의 화면이 MybatisSimpleConfig.java 의 화면이다.
basePackages에 자신의 mapper package 경로를 넣어준다.
이제 기본적인 세팅은 끝났고, Controller 부터 순차적으로 DB연동을 위한 코드를 진행하겠다.
Controller (Class)
Controller 다음의 순서는 Service 인터페이스 이므로 @Autowired 어노테이션을 통해 Service에 접근하였다.
데이터 호출과 전송은 getData() 메소드를 통해 전송하도록 설계하였다.
변수 a를 String 형식으로 선언하고 a에 restService.getData() 의 값을 주어 Service 인터페이스의 getData() 메소드와 연결되도록 하였다.
이후 돌아온 값은 아래의 return a; 로 화면에 출력되게 된다.
Service (Interface)
Service 단은 Interface 이므로 따로 구현은 없고 getData()를 선언만 한다.
이 후 ServiceImpl 단에서 Service를 상속받아 연결하게 된다.
ServiceImpl (Class)
위에서 보이는 바와 같이 implements RestService 를 통해 Service를 상속받아 연결시킨다.
또한 Controller에서 했던 방식과 비슷하게 @Autowired 어노테이션을 통해 Mapper로 연결된다.
Mapper (Interface)
Mapper 인터페이스도 앞의 Service 인터페이스와 다를바가 없다.
그저 getData()를 선언하고 뒤의 XML과 연결시키는 역할을 한다.
SQLMapper (XML)
XML 파일은 위와 같이 생성할 패키지에 우클릭을 한 후 [New] - [mapper] 을 통해 생성할 수 있다.
XML 파일을 생성한 후 위와 같이 SQL문을 작성하면 된다.
나는 SELECT 문을 사용하여 데이터를 조회해서 전달하도록 하였다.
위의 id를 앞에서 사용한 메소드인 getData로 똑같이 주고 resultType에 데이터 형식을 입력해 주면 된다.
앞에서 String으로 받기때문에 가져올 데이터 형식도 java.lang.String 으로 설정하여 문자열 형식으로 반환되도록 하였다.
위의 작업을 완료하면 위와같이 DB에서 조회한 데이터가 표출된다.
'SpringBoot' 카테고리의 다른 글
[Spring Boot] Alias 사용하기 (0) | 2019.11.18 |
---|---|
[Spring Boot] GSON으로 DB 값 처리하기 (parameter 전달) (0) | 2019.11.13 |
[Spring Boot] RestAPI를 사용하여 문자열 출력 (0) | 2019.11.11 |
[Spring Boot] Gradle Project 생성하기 (3) | 2019.11.11 |