상세 컨텐츠

본문 제목

Spring MVC Controller, Service, Mapper (MyBatis) 예제

Spring(프레임워크)

by 헬로제이콥 2025. 2. 6. 03:41

본문

Spring MVC Controller, Service, Mapper (MyBatis) 예제: DB 데이터 View 페이지로 넘기기

아래는 Spring MVC 패턴을 사용하여 DB에서 데이터를 조회하여 View 페이지로 넘기는 예제입니다. MyBatis를 ORM 프레임워크로 사용하며, Controller, Service, Mapper (DAO 역할) 클래스를 포함합니다.

1. Controller (MaCinkRomngController.java)

Java
 
@Controller
@RequestMapping(FOLDER_PATH) // FOLDER_PATH는 클래스 상단에 상수로 정의
public class MaCinkRomngController {

    @Autowired
    private MaCinkRomngService maCinkRomngService;

    @RequestMapping("list.do")
    public String list(@ModelAttribute("searchVO") MaCinkRomngVO searchVO, Model model) {
        // 1. Service 객체를 통해 DB 데이터 조회
        List<MaCinkRomngVO> list = maCinkRomngService.selectMaCinkRomngList(searchVO);

        // 2. Model 객체에 조회된 데이터 추가
        model.addAttribute("resultList", list); // "resultList" 이름으로 view에서 사용

        return ".mLayout" + FOLDER_PATH + "list"; // view 페이지 경로 반환
    }
}

2. Service (MaCinkRomngService.java)

Java
 
@Service
public class MaCinkRomngService {

    @Autowired
    private MaCinkRomngMapper maCinkRomngMapper;

    public List<MaCinkRomngVO> selectMaCinkRomngList(MaCinkRomngVO searchVO) {
        return maCinkRomngMapper.selectMaCinkRomngList(searchVO);
    }
}

3. Mapper (MaCinkRomngMapper.java)

Java
 
public interface MaCinkRomngMapper {
    List<MaCinkRomngVO> selectMaCinkRomngList(MaCinkRomngVO searchVO);
}

4. MyBatis Mapper XML (maCinkRomngMapper.xml)

XML
 
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="kepco.evc.ma.mbrMng.persnMbr.clnkRomng.mapper.MaCinkRomngMapper">
    <select id="selectMaCinkRomngList" parameterType="MaCinkRomngVO" resultType="MaCinkRomngVO">
        SELECT /* 필요한 컬럼 목록 */
        FROM /* 테이블 이름 */
        WHERE 1=1
        <if test="searchWord != null and searchWord != ''">
            AND /* 검색 조건 컬럼 */ LIKE concat('%', #{searchWord}, '%')
        </if>
        <if test="searchType != null and searchType != ''">
            AND /* 검색 조건 컬럼 */ = #{searchType}
        </if>
        /* 추가 검색 조건 */
        ORDER BY /* 정렬 기준 컬럼 */ DESC
    </select>
</mapper>

5. View Page (list.jsp)

Java
 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<table>
    <thead>
        <tr>
            <th>회원번호</th>
            <th>이름</th>
            <th>...</th>
        </tr>
    </thead>
    <tbody>
        <c:forEach var="item" items="${resultList}">
            <tr>
                <td>${item.mbrNo}</td>
                <td>${item.name}</td>
                <td>...</td>
            </tr>
        </c:forEach>
    </tbody>
</table>

주요 설명:

  • Controller: list() 메서드는 Service를 통해 DB 데이터를 조회하고, Model 객체에 데이터를 담아 view 페이지로 전달합니다.
  • Service: selectMaCinkRomngList() 메서드는 Mapper를 호출하여 DB 데이터를 조회합니다.
  • Mapper: selectMaCinkRomngList() 메서드는 MyBatis를 사용하여 SQL 쿼리를 실행하고, 결과를 MaCinkRomngVO 객체 리스트로 반환합니다.
  • MyBatis Mapper XML: select 태그는 SQL 쿼리를 정의하며, parameterType은 파라미터 타입, resultType은 결과값을 나타냅니다.
  • View Page: ${resultList} EL 표현식을 사용하여 Model 객체에 담긴 데이터를 출력합니다. JSTL의 c:forEach 태그를 사용하여 리스트를 반복하며 데이터를 표시합니다.

관련글 더보기