반응형
DB에 테이블을 만들어주고 값을 넣어줍니다.
복합키를 주고 각 데이터의 크기와 형식을 정해주고 간단한 주석을 넣었습니다.
데이터 베이스에 값도 넣어줍니다.
전에 만들어둔 프로젝트를 복사해서 이름을 바꿔준뒤 서버에 연결해 줍니다.
- OpenApiPrj
- SpringPRJ2.0
두 프로젝트로 진행합니다.
OpenApiPr
<!-- RequestBody 사용시, JSON 변환이 안되는 경우 추가함 -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
pom.xml
package poly.dto;
public class AccStatDTO {
private String yyyymm;
private String a_code;
private String a_name;
private String stat_a;
private String stat_b;
private String reg_id;
private String reg_dt;
private String chg_id;
private String chg_dt;
public String getYyyymm() {
return yyyymm;
}
public void setYyyymm(String yyyymm) {
this.yyyymm = yyyymm;
}
public String getA_code() {
return a_code;
}
public void setA_code(String a_code) {
this.a_code = a_code;
}
public String getA_name() {
return a_name;
}
public void setA_name(String a_name) {
this.a_name = a_name;
}
public String getStat_a() {
return stat_a;
}
public void setStat_a(String stat_a) {
this.stat_a = stat_a;
}
public String getStat_b() {
return stat_b;
}
public void setStat_b(String stat_b) {
this.stat_b = stat_b;
}
public String getReg_id() {
return reg_id;
}
public void setReg_id(String reg_id) {
this.reg_id = reg_id;
}
public String getReg_dt() {
return reg_dt;
}
public void setReg_dt(String reg_dt) {
this.reg_dt = reg_dt;
}
public String getChg_id() {
return chg_id;
}
public void setChg_id(String chg_id) {
this.chg_id = chg_id;
}
public String getChg_dt() {
return chg_dt;
}
public void setChg_dt(String chg_dt) {
this.chg_dt = chg_dt;
}
}
AccStatDTO
package poly.persistance.mapper;
import java.util.List;
import config.Mapper;
import poly.dto.AccStatDTO;
@Mapper("AccStatMapper")
public interface IAccStatMapper {
List<AccStatDTO> getAccStatInfo(AccStatDTO pDTO) throws Exception;
}
IAccStatMapper
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- JAVA와 연결할 Mapper 파일 설정 -->
<mapper namespace="poly.persistance.mapper.IAccStatMapper">
<!-- 회원 가입하기(회원정보 등록하기) -->
<select id="getAccStatInfo" parameterType="AccStatDTO" resultType="AccStatDTO">
SELECT
YYYYMM,
A_CODE,
A_NAME,
STAT_A,
STAT_B,
REG_ID,
REG_DT,
CHG_ID,
CHG_DT
FROM
ACCIDENT_STAT
WHERE
1=1
<!-- AccStatDTO의 yyyymm 변수의 값이 존재한다면 ..
일반적으로 아무 값이 있는 경우에 대해 조건문을 작성하면,
반ㄷ싀 NULL체크와 ''인지 확인한느 구분이 필요하다.
그러나 myBatis에서 NULL 체크 로직 없이, (! = '' => ''값이 아니라면)만
NULL 값을 강제로 '' 변경하였기 때문이다.
따라서 !=''만 작성한다.-->
<if test='yyyymm != ""'>
<![CDATA[
AND YYYYMM = #{yyyymm}
]]>
</if>
<!-- AccStatDTO의 a_code 변수의 값이 존재한다면 -->
<if test='a_code != ""'>
<![CDATA[
AND A_CODE = #{a_code}
]]>
</if>
</select>
</mapper>
AccStatmapper
package poly.service;
import java.util.List;
import poly.dto.AccStatDTO;
public interface IAccStatService {
List<AccStatDTO> getAccStatInfo(AccStatDTO pDTO) throws Exception;
}
IAccStatService
package poly.service.impl;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;
import poly.dto.AccStatDTO;
import poly.persistance.mapper.IAccStatMapper;
import poly.service.IAccStatService;
@Service("AccStatService")
public class AccStatService implements IAccStatService {
@Resource(name ="AccStatMapper")
private IAccStatMapper accStatMapper;
private Logger log = Logger.getLogger(this.getClass());
//교통사고 정보 가져오기
@Override
public List<AccStatDTO> getAccStatInfo(AccStatDTO pDTO) throws Exception {
log.info(this.getClass().getName() + ".geAccStatInfo start !");
//교통 사고 조회
List<AccStatDTO> rList = accStatMapper.getAccStatInfo(pDTO);
//참조형 변수는 무조건 오류 방지를 위해 널처리를 한다.
if(rList ==null) {
rList = new ArrayList<AccStatDTO>();
}
log.info(this.getClass().getName() + ".getAccStatInfo end !");
return rList;
}
}
AccStatService
package poly.controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import poly.dto.AccStatDTO;
import poly.service.impl.AccStatService;
import poly.util.CmmUtil;
@Controller("AccStatController")
public class AccStatController {
private Logger log = Logger.getLogger(this.getClass());
@Resource(name = "AccStatService")
private AccStatService accStatService;
/*교통사고 정보 조회를 위한 Open API
*ResponseBody 어노테이션은 jsp로 값을 전달하지 않고, 바로 결과를 제공할 때 사용한다.
*일반적으로Map 객체를 통해 return을 하면 Json형태로 변환되서 출력한다.
*ResponseBody를 사용하면, ModelMap 객체를 사용할 필요가 없다.
*따라서 getAccStatInfo 함수의 파라미터에서 ModelMap을 제외시킨다.
*/
@RequestMapping(value = "accStat/getAccStatInfo")
@ResponseBody
public Map<String, Object> getAccStatInfo(HttpServletRequest request, HttpServletResponse response)
throws Exception{
log.info(this.getClass().getName() + ".getFoodInfoFromWEB start !");
// 처리 결과를 전달하기 위한 변수
Map<String, Object> rMap = new HashMap<String, Object>();
// 교통사고 년월
String yyyymm = CmmUtil.nvl(request.getParameter("yyyymm"));
//사고 구분
String a_code = CmmUtil.nvl(request.getParameter("a_code"));
// 교통 사고 정보를 저장하기 위한 파라미터 저장하기
AccStatDTO pDTO = new AccStatDTO();
pDTO.setYyyymm(yyyymm);
pDTO.setA_code(a_code);
// 교통사고 조회
List<AccStatDTO> rList = accStatService.getAccStatInfo(pDTO);
if(rList == null) {
rList = new ArrayList<AccStatDTO>();
}
rMap.put("reqYYYYMM", yyyymm); //호출한 파라미터 : yyyymm
rMap.put("reqAcode", a_code); //호출한 파라미터 : a_code
rMap.put("recordCnt", rList.size()); // 조회된 교통사고 정보 건수
rMap.put("res", rList); // 조회된 교통사고 정보
log.info(this.getClass().getName() + ".getFoodInfoFromWEB end !");
return rMap;
}
}
AccStatController
서버를 돌려보면 데이터 베이스에 넣은 값들이 나옵니다.
JSON 웹 뷰어를 통해 보면 조금 더 편하게 볼 수 있습니다.
페이지에 나온 값을 복사해서 뷰어에 넣어주고 포멧을 눌러줍니다.
웹 페이지에서 나온 그대로 보는 것 보다 확실히 보기 편하게 나오는 것을 확인할 수 있습니다.
반응형
'Framework & Library > Spring Framework' 카테고리의 다른 글
[Spring Framework] : Rest 기반 Open API Server 구현 (3부) (0) | 2021.11.03 |
---|---|
[Spring Framework] : Rest 기반 Open API Server 구현 (2부) (0) | 2021.11.03 |
[Spring Framework] : 오피니언 마이닝, Opinion Mining (긍정 및 부정 분석) (0) | 2021.10.29 |
[Spring Framework] : 딥러닝 (이미지 인식) (0) | 2021.10.27 |
[Spring Framework] : 웹 크롤링(수집)하기 (0) | 2021.10.26 |
댓글