SPRING BOOT

[스프링부트 9] Spring Boot 데이터베이스(MSSQL) 연결 2

내. 일. 을 바꾸는 업무 자동화 2021. 11. 22. 08:59
반응형

이번 포스팅에서는 실제로 DB의 테이블에서 데이터를 조회해서 VIEW에 가져와 보겠습니다 

먼저 sample.xml 쿼리문을 예로 생성해 보겠습니다. 

아래와 같이 지난시간에 생성되었던 resourecs/mybatis/ 경로 밑에 sample.xml 파일을 생성하고 아래와 같이 작성해 줍니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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 namespace="com.mobile.mis.sample.mapper.SampleMapper">
 
    <select id="selectEmp" resultType="com.mobile.mis.sample.vo.empVo">;
 
        SELECT
          CD_COMPANY as company,
          ID_USER as id,
          NO_EMP as no
        FROM MOBILE_EMP
 
    </select>
 
</mapper>
cs
위의 예제는 MyBatis에서 Result를 ResultType를 이용해 VO로 처리할 것이다. 하지만 아래와 같이 ResultMap도 있으니 알아두자. 
ResultType : 쉽게 클래스를 가져온다고 생각하면 이해하기 쉬울 것 같다. 즉, 미리 정의해 놓은 vo를 사용
                - hashMap : Map 형식으로 리턴
                - VO : Value Object 형식으로 리턴

ResultMap : mapper(xml) 안에서 새롭게 정의된 형식으로 이해하자 
                - resultMap 선언 시 사용할 ID를 입력하게 되며, 기존 VO에서 컬럼의 이름이 다를 경우 등
                  컬럼 네임 치환이 가능하다. 
                - 개발자가 직접 각 요소들을 매핑/설정 할 수 있다. 

그럼 이제, mapper과 vo를 생성해 볼까요? (위의 풀패키지 경로 참고)

먼저 vo 입니다. 아래 그림의 경로를 참고하여 mapper과 vo의 폴더(패키지)를 생성합시다. 

위 경로에 empVo.java 파일을 생성하면 되겠죠? 내용은 아래와 같습니다. 
(sample.xml에서 호출한 쿼리의 데이터를 받아올 string 변수를 생성하는 역할로 이해하시면 됩니다.)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package com.mobile.mis.sample.vo;
 
public class empVo {
 
        private String company;
        private String id;
        private String no;
 
        public String getCompany() {
            return company;
        }
        public void setCompany(String company) {
            this.company = company;
        }
 
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
 
        public String getNo() {
            return no;
        }
        public void setNo(String no) {
            this.no = no;
        }
    }
 
 
}
 
cs

 

자, 여기까지는 큰 어려움 없이 진행 하셨을 것 입니다. 이제 mapper을 생성해 보도록 합시다. 

아래와 같은 경로에 java파일을 생성하고 파일 내용을 작성합니다. 

위의 sample.xml에 기입된 경로(mapper tag안에 선언한 namespace와 정확한 위치) 에 같은 이름으로 생성되야 하며, 

selecttag안에 선언된 id값(sampleEmp)와 메소드 이름이 같아야 합니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
package com.mobile.mis.sample.mapper;
 
import java.util.List;
import com.mobile.mis.sample.vo.empVo;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
 
@Repository
@Mapper
public interface SampleMapper {
    List<empVo> selectEmp();
 
}
cs

 

다음은 Service 클래스를 생성합니다. 

아래와 같은 경로에 패키지(폴더)를 생성하고, 파일을 생성하여 작성 합니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package com.mobile.mis.sample.service;
 
import com.mobile.mis.sample.mapper.SampleMapper;
import com.mobile.mis.sample.vo.empVo;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
 
@Service
public class EmpService {
    @Autowired
    public SampleMapper mapper;
 
    public List<empVo> selectEmp(){
        return mapper.selectEmp();
    }
}
 
cs

 

이제 위에서 생성한 서비스 메소드를 호출할 컨트롤러를 작성해 보겠습니다. 기존에 계속 작성하던 SampleController에 아래의 내용을 추가해 줍니다. 

1
2
3
4
5
6
7
8
9
10
11
12
 
    @Autowired
    EmpService service;
 
    @RequestMapping(value = "/emp", method=RequestMethod.GET)
    public ModelAndView mssql(HttpServletRequest request) {
        ModelAndView mav = new ModelAndView();
        List<empVo> testList = service.selectEmp();
        mav.addObject("list", testList);
        mav.setViewName("thymeleaf/emp");
        return mav;
    }
cs

이제 thymeleaf/emp 의 view 화면을 꾸며주면 되겠죠? 

자, 아래와 같이 emp.html 파일을 생성하고, 간단하게 view 작성을 해봅시다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html>
<html lang="kr" xmlns:th="http://www.thymeleaf.org">
<head>
    <title>DATABASE 테스트</title>
    <meta charset="UTF-8">
</head>
<body>
<div>
        <ul>
            <li th:each="item : ${list}">
                <dl>
                    <dd><span th:text="${ item.company }"></span></dd>
                    <dt><a href="#"><span th:text="${ item.id }"></span></a></dt>
                    <dd><span th:text="${ item.no }"></span></dd>
                </dl>
            </li>
        </ul>
</div>
</body>
</html>
 
 
cs

 

이제 서버를 실행시켜, 페이지를 호출 (http://localhost:8080/emp) 해 볼까요?

아래와 같이 (디자인은 전혀 고려하지 않았지만..) DB의 TABLE에서 데이터를 정상적으로 가져오고 있을 것 입니다.

자, 매우 빠르게 진행한 거서 같은데요. (대략적인 vo, mapper, service에 대해서만 간단히 실습)

나머지 궁금한 사항은 댓글 달아 주셔도 되고, 다른 자료를 찾아보시면 개념 잡는데 더 좋을 것 같습니다. 

 

우리는 지금까지 Spring Boot에서 ms-sql 데이터베이스를 연결하는 설정방법과, 간단한 예제를 통해 데이터를 view로 가져오는 샘플 페이지를 작성해 보았습니다. 

 

다음 시간에는 Spring Boot에서 어플리케이션 로그와 데이터베이스 로그를 보여지도록 설정하는 방법에 대해 포스팅 하도록 하겠습니다. 

반응형