Notice
Recent Posts
Recent Comments
Link
투케이2K
9. (spring/스프링) api 생성 - DB 데이터 조회 및 model 객체 매핑 데이터 확인 실시 본문
/* =========================== */
[ 개발 환경 설정 ]
개발 툴 : inteli j
개발 언어 : spring
/* =========================== */
/* =========================== */
[폴더 및 파일 추가]
/* =========================== */
/* =========================== */
[소스 코드 : application.yml]
spring:
devtools:
livereload:
enabled: true
datasource:
driver-class-name: oracle.jdbc.OracleDriver
url: jdbc:oracle:thin:@115.58.176.215:1521:username
username: userschema
password: pw1234
server:
port: 7000
mybatis:
mapper-locations: classpath:mappers/*.xml
type-aliases-package: com.project.solutionpackage.model
[소스 코드 : model >> Insert_Table_Model]
package com.project.solutionpackage.model;
import lombok.Data;
@Data
public class Insert_Table_Model {
/**
* [클래스 설명]
* 1. insert 포맷 형태 정의 클래스
* 2. controller 에서 사용한다
* */
private String idx;
private String name;
private String dept;
private String sex;
public Insert_Table_Model(String idx, String name, String dept, String sex) {
this.idx = idx;
this.name = name;
this.dept = dept;
this.sex = sex;
}
}
[소스 코드 : mappers >> DBMapper.xml]
<?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">
<!-- mapper >> interface 매핑 : id 값 중요 (interface 메소드) -->
<mapper namespace="com.project.solutionpackage.mapper.DBMapper">
<!-- select 조건 절 조회 : db 데이터 조회 : resultType 모델 객체 지정 -->
<select id="userInfoModelList" resultType="Insert_Table_Model">
<![CDATA[
select t_idx, t_name, t_dept, t_sex
from test_user
where t_dept like '%' || #{dept} || '%'
order by to_number(t_idx) asc
]]>
</select>
</mapper>
[소스 코드 : mapper >> DBMapper]
package com.project.solutionpackage.mapper;
import com.project.solutionpackage.model.Insert_DB_UserInfo_Model;
import com.project.solutionpackage.model.Insert_Table_Model;
import org.apache.ibatis.annotations.Mapper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Mapper
public interface DBMapper {
/**
* [클래스 설명]
* 1. DBMapper.xml 쿼리 조회 결과 >> DB 데이터를 담을 그릇
* 2. service 에서 참조해서 사용한다
* */
// [DBMapper.xml 쿼리에서 선언한 변수 개수 및 타입에 맞게 파라미터 선언]
List<Insert_Table_Model> userInfoModelList(String dept); // 리턴값으로 객체에 매핑된 List 사용 [출력]
}
[소스 코드 : service >> DBService]
package com.project.solutionpackage.service;
import com.project.solutionpackage.mapper.DBMapper;
import com.project.solutionpackage.model.Insert_DB_UserInfo_Model;
import com.project.solutionpackage.model.Insert_Table_Model;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class DBService {
/**
* [클래스 설명]
* 1. DBMapper 인터페이스 호출 및 controller 에 반환 할 리턴 값 정의
* 2. controller 에서 사용한다
* */
// [DBMapper 인터페이스 설정 : db 데이터 참조 [DBMapper.xml]]
@Autowired
private DBMapper dbMapper;
// [DBMapper 인터페이스 지정 >> DBApiController 리턴 값 지정]
public List<Insert_Table_Model> userInfoModelList(String dept) {
return dbMapper.userInfoModelList(dept); //컨트롤러에 리턴 실시
}
}
[소스 코드 : controller >> DBApiController]
package com.project.solutionpackage.controller;
import com.project.solutionpackage.model.Font;
import com.project.solutionpackage.model.Insert_DB_UserInfo_Model;
import com.project.solutionpackage.model.Insert_Table_Model;
import com.project.solutionpackage.model.Return_DB_Json_Model;
import com.project.solutionpackage.service.DBService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
// [rest 방식 컨트롤러 / Controller = view 연결]
@RestController
public class DBApiController {
/**
* [클래스 설명]
* 1. api 호출 경로 및 리턴 데이터 반환 실시
* 2. 실제로 api 호출 (req) 및 반환 (res) 이루어지는 클래스
* */
// [service 설정 : 로직 연결 위함]
// [로직 : 사용자 API 호출 >> 컨트롤러에서 서비스 호출 >> 서비스에서 DB Mapper 호출]
@Autowired
private DBService dbService;
// [post : Map 방식]
// [경로 지정 : http://localhost:7000/userInfoModelList?dept=백제]
// [input : 서비스에서 설정한 파라미터 개수와 같아야합니다]
// [output : 조회된 데이터를 json 형식 string값으로 반환합니다]
@PostMapping("/userInfoModelList")
public String userInfoModelList(@RequestParam Map<String, String> param) {
System.out.println("\n");
System.out.println("=======================================");
System.out.println("[DBApiController] : [userInfoModelList]");
System.out.println("[request keySet] : " + String.valueOf(param.keySet()));
System.out.println("[request dept] : " + String.valueOf(param.get("dept")));
System.out.println("=======================================");
System.out.println("\n");
// 리턴 값 데이터 정의
List<Insert_Table_Model> tables = new ArrayList<>();
tables.addAll(dbService.userInfoModelList(param.get("dept"))); //db에서 조회된 전체 데이터 추가 실시
// 반복문 사용해서 리스트에 삽입된 데이터 확인 및 데이터 가공 실시
for(int i=0; i<tables.size(); i++){
System.out.println("\n");
System.out.println("=======================================");
System.out.println("[DBApiController] : [userInfoModelList]");
System.out.println("[list] : " + String.valueOf(tables.get(i).getIdx()));
System.out.println("[list] : " + String.valueOf(tables.get(i).getName()));
System.out.println("[list] : " + String.valueOf(tables.get(i).getDept()));
System.out.println("[list] : " + String.valueOf(tables.get(i).getSex()));
System.out.println("=======================================");
System.out.println("\n");
}
return tables.toString();
}
}
/* =========================== */
/* =========================== */
[결과 출력]
/* =========================== */
반응형
'Spring' 카테고리의 다른 글
Comments