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 태그를 사용하여 리스트를 반복하며 데이터를 표시합니다.
'Spring( Framework )' 카테고리의 다른 글
WebSquare + Spring 연동 (3) | 2025.07.02 |
---|---|
학생 정보 관리 시스템 구축 예제 (1) | 2025.02.09 |
ObjectMapper 매퍼 = new ObjectMapper() (0) | 2025.01.24 |
패키지에 impl을 붙이는 이유 (1) | 2025.01.24 |
REST 방식에서 쿼리스트링 Query string in REST method (1) | 2025.01.23 |