본문 바로가기

SpringBoot

[Spring Boot] GSON으로 DB 값 처리하기 (parameter 전달)

앞의 DB연동 프로젝트를 이어서 진행하겠다.

 

Mybatis 사용에 필요한 gradle을 추가하지 않았다면 아래의 링크를 보고 추가하고 오면 된다.

 

https://yong-s.tistory.com/4

 

[Spring Boot] DB 연동하기

아직 Gradle Project가 생성되지 않았으면 아래의 링크를 먼저 하고오길 바란다. https://yong-s.tistory.com/2 [Spring Boot] Gradle Project 생성하기 1. 전자정부 프레임워크 3.8.0 설치 https://www.egovframe..

yong-s.tistory.com

일단 GSON이란 JSON구조의 데이터를 JAVA의 객체구조로 변환시켜주거나 그 반대의 행위를 돕는 라이브러리이다.

 

여기서 JSON은 각각의 속성이 key : value 쌍으로 이루어진 데이터 표현 표준이다.

JSON은 XML보다 가독성이 좋고 훨씬 가볍다는 장점이 있다.

또한, JSON 형식만 지킨다면 어떤 시스템간이든지 데이터 교환이 가능하다.

 

이러한 장점때문에 JSON이 XML보다 많이 사용되는 편이다.

 

나는 DB에서 읽어온 데이터를 {키 : 값} 형태의 JSON 구조로 화면에 표출하기 위하여 GSON을 사용하였다.

 

우선 GSON을 사용하기 위해 Gradle을 추가해야 한다.

 

https://mvnrepository.com/artifact/com.google.code.gson/gson/2.8.5

 

Maven Repository: com.google.code.gson » gson » 2.8.5

com.google.code.gson gson 2.8.5 // https://mvnrepository.com/artifact/com.google.code.gson/gson compile group: 'com.google.code.gson', name: 'gson', version: '2.8.5' // https://mvnrepository.com/artifact/com.google.code.gson/gson libraryDependencies += "co

mvnrepository.com

위의 링크에서 GSON Gradle을 받아와 앞서 했던 방법과 동일하게 Gradle을 추가해주면 된다.

 

 

이번 프로젝트의 구성은 위와 같다.

 

앞의 프로젝트에서 VO (Value Object) 클래스 두개를 추가해주면 된다.

 

그럼 생성된 VO 클래스를 하나씩 살펴보자.

 

SearchVO

 

SearchVO는 입력된 홈페이지 URL에서 각각의 값을 가져와 startDate와 endDate에 저장해준다.

 

이를 Parameter로 Controller에서 SQLMapper.xml 까지 전달하여 설정한 날짜의 범위값만 DB에서 검색하도록 하였다.

 

getter, setter 메소드는

 

[Alt + Shift + S] 를 누른 후 [Generate Getter and Setter] 을 클릭하면 자동 생성된다.

 

getter, setter을 사용하여 외부에서 각 변수에 값을 저장하고 읽을 수 있도록 하였다.

 

 

BaseInfoVO

 

 

BaseInfoVO는 DB에서 받아온 값을 각 변수에 저장하고 이를 json형태로 변환시키기 위하여 생성하였다.

 

 VO 클래스 두개를 생성했으면 Controller 와 XML을 살펴보겠다.

 

 

Controller

 

 

Controller 클래스에서 앞의 프로젝트와 차이점은 Gson을 사용하여 Json 형식으로 return 시켜준다는 점과

 

getBaseInfo 메소드를 사용하여 값을 전달할때 인자값으로 SearchVO의 값을 전달해준다는 점이 있다.

 

이후의 Service, ServiceImpl, Mapper 은 메소드의 인자값만 SearchVO로 설정해주면 된다.

 

SQLMapper

 

 

 

 

XML파일은 앞의 SearchVO의 값을 받아서 사용해야 하기 때문에

 

parameterType = "SearchVO 경로"

 

를 추가해준다.

 

이 후 가져온 값을 아래의 SQL문에서 사용할 때는 #{변수명} 으로 사용하면 된다.

 

나는 BETWEEN 문을 사용하여 DB에서 startDate와 endDate 사이의 값만 검색하도록 설정하였다.

 

만약 DB값이 TIME_STAMP 형식으로 되어있다면

 

TO_CHAR(컬럼명 / 60 * 60 * 24) + TO_DATE( '19700101090000', 'YYYYMMDDHH24MISS' ), 'YYYYMMDDHH24MISS')

 

를 사용하여 값을 변경할 수 있다.

 

위의 설정을 모두 마치고 실행시키면

 

 

위와 같이 Json 형식으로 값이 표출되게 된다.

 

나는 URL에

 

startDate = 20191001000000

endDate = 20191015111111

 

로 설정을 했기 때문에 위의 값이 SearchVO의 각 변수에 들어가게 되고

 

19년10월1일 부터 19년10월15일 까지의 DB값이 조회된다.