본문 바로가기
Java/Spring

Spring) Dev 목록 가져오기

by 박채니 2022. 8. 18.

안녕하세요, 코린이의 코딩 학습기 채니 입니다.

 

개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.


Dev 목록 가져오기

 

Controller

DemoController

@Controller
@RequestMapping("/demo")
public class DemoController {
	
	static final Logger log = LoggerFactory.getLogger(DemoController.class);
	
	@Autowired
	private DemoService demoService;
	
	@RequestMapping(path = "/devList.do", method = RequestMethod.GET)
	public String selectDev(Model model) {
		List<Dev> list = demoService.selectDev();
		log.info("list = {}", list);
		model.addAttribute("list", list);
		return "demo/devList";
	}
}

path의 공통적인 "/demo"를 클래스 레벨에 작성하므로써 중복을 제거해주었습니다.

클래스 레벌의 "/demo" + 메소드 레벨의 path = "/devList.do"가 합쳐져서 mapping 처리됩니다.

 

Service

DemoService interface 생략

DemoServiceImpl

@Override
public List<Dev> selectDev() {
    return demoDao.selectDev();
}

 

Dao

DemoDao interface 생략

DemoDaoImpl

@Override
public List<Dev> selectDev() {
    return sqlSession.selectList("demo.selectDev");
}

 

demo-mapper.xml

<select id="selectDev" resultMap="devMap">
    select * from dev order by no
</select>

<resultMap type="dev" id="devMap">
    <result column="lang" property="lang"/> <!-- property가 String[] 타입이므로 설정해둔 핸들러가 자동으로 매칭되어 작동! -->
</resultMap>

 

devList.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<jsp:include page="/WEB-INF/views/common/header.jsp">
	<jsp:param value="Dev 목록" name="title"/>
</jsp:include>
<table class="table w-75 mx-auto">
	<thead>
		<tr>
		  <th scope="col">번호</th>
		  <th scope="col">이름</th>
		  <th scope="col">경력</th>
		  <th scope="col">이메일</th>
		  <th scope="col">성별</th>
		  <th scope="col">개발가능언어</th>
		  <th scope="col">등록일시</th>
		</tr>
	</thead>
	<tbody>
		<c:if test="${not empty list}">
			<c:forEach items="${list}" var="dev">
				<tr>
					<td>${dev.no}</td>
					<td>${dev.name}</td>
					<td>${dev.career}</td>
					<td>${dev.email}</td>
					<td>${dev.gender}</td>
					<td>
						<c:forEach items="${dev.lang}" var="lang" varStatus="vs">
							${lang}${not vs.last ? ',' : ''}
						</c:forEach>
					</td>
					<td>
						<fmt:parseDate value="${dev.createdAt}" pattern="yyyy-MM-dd'T'HH:mm" var="createdAt"></fmt:parseDate>
						<fmt:formatDate value="${createdAt}" pattern="yy/MM/dd HH:mm"/>
					</td>
				</tr>
			</c:forEach>
		</c:if>
	</tbody>
</table>
<jsp:include page="/WEB-INF/views/common/footer.jsp"></jsp:include>