-
[SpringBoot] Gson 사용 및 DB 데이터 처리Server/SpringBoot 2019. 11. 12. 15:11
오늘은 Gson 라이브러리를 이용해 DB에 있는 데이터들을 한번 리턴해보겠다.
Gson은 JSON파일을 자바 Object로 변환해주는 구글이 만든 라이브러리다!
XML보다 상대적으로 사용하기 쉬워 많이 사용한다.
여기서 JSON이란 "속성-값" 쌍 또는 "키-값" 쌍으로 이루어진 데이터 Object를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 표준 포맷이다.
우선 사용하기 위해서는 Gradle에 GSON을 추가해주어야 한다~!
나는 2.8.5 버전으로 했고
https://mvnrepository.com/artifact/com.google.code.gson/gson/2.8.5
여기서 받으면된다!
Gradle 추가하는 방법은 아래링크!
https://100winone.tistory.com/4
이제 Gradle이 추가되었다면 본격 코드로 고고링
프로젝트 구성은 이런식으로 되어있고 이 번 포스트에서 언급안하는 부분들은
https://100winone.tistory.com/6
여기에 설정되어있다!!
SearchVO
홈페이지 url에서 startDate와 endDate를 parameter로 Controller에 전달해주기 위해 VO(ValueObject)를 따로 클래스로 만들어주었다. 기본 변수는 private 으로 선언하여 외부에서 접근하지 못하게 한다.
Alt + Shift + S 단축키를 눌러 Generate Getter and Setter를 하여 메소드를 생성하여 외부에서 접근하게 한다.
BaseInfoVO
BaseInfoVO 클래스를 만든 이유는 이따가 언급하겠지만 DB에서 받아오는 데이터들을 json형태로 표현할때
BaseInfoVO 에 있는 변수 occurTIme, regionCd를 DB로부터 들어오는 데이터와 맞춰 Json형태로 return 하기위해 만들었다.
이따 보겠지만 sqlMapper.xml에서 BaseInfoVO가 resultType에 들어갈 때 이용된다.
즉 BaseInfoVO자체가 return 자료형이 될 것이다!!
RestController
이번 포스팅에선 getBaseInfo() 메소드에 대해서만 언급을 하겠다.
일단 기본적인 url 형식은
<http://localhost:8080/api/v1/accidents/time?startDate=20191001&endDate=20191010>
이런식이다.
getBaseInfo() 에 params에 searchVO에 있는 startDate와 endDate가 전달되게 된다.
후에 Gson을 선언해주고 list 형식을 Json의 형태로 나타내기 위해 선언해준다.
Mapper로 부터 얻어올 데이터는 Params로 받은 시작날과 끝나는 날 사이에 있는 사고발생시간인 occurTime과 발생지역 코드인 regionCd가 될 것이다.
이 후에 Spring의 구조인 Controller->Service->ServiceImpl->Mapper->sqlMapper.xml 순서로 데이터를 받아온다.
받아온 값의 list를 toJson 메소드로 Json 형식으로 바꿔준다.
sqlMapper
Mapper에서 주의할 점만 언급하겠다.
먼저 id에는 전달해줄 값의 메소드 명을 맞춰주기 위해 getBaseInfo로 해준다.
resultType은 일반 자료형이 아닌 BaseInfoVO를 사용하기 때문에 패키지명부터 풀네임으로 써주었다.
만약 DB의 값이 TIMESTAMP 형식으로 되어있다면
TO_CHAR(변환컬럼명/ (60 * 60 * 24) + TO_DATE('19700101090000', 'YYYYMMDDHH24MISS'), 'YYYYMMDDHH24MISS')
이런식으로 바꾸어 주어야한다!
이 후 실행을 하게되면 이런식으로 정렬이 되지않은 모습으로 나타난다.
개발자라면 깔끔하게 보이고 싶어하는게 당연~!하기 때문에 바꿔보자!
위에 정렬되지 않은 데이터들을 아래 화면처럼 가독성이 높여 보이기위해 jsonView를 설치해준다.(chrome기준)
https://chrome.google.com/webstore/search/jsonview?hl=ko
위 링크에서 Chrome에 추가만 하면된다.
Service~Mapper단 까지는 이전 포스팅과 똑같이 구현하면 되므로 따로 설명하거나 구현하지는 않겠다.
언제나 복습이 필요하다!~!,,, 그럼 끝!!!
출처 : https://aljjabaegi.tistory.com/303
'Server > SpringBoot' 카테고리의 다른 글
[SpringBoot] Lombok 사용 및 적용 방법 (0) 2019.11.18 [Spring boot] Alias 사용법 (0) 2019.11.18 [SpringBoot] Mapper로 DB select 하기 (0) 2019.11.08 [SpringBoot] RestAPI 이용해서 "HelloWorld 띄우기" (0) 2019.11.07 [SpringBoot] Gradle 추가하기 (0) 2019.11.07