반응형
지금까지 데이터베이스를 활용해서 간단하게는 하나의 테이블에서 하나의 작업을 처리하여 결과물로 가져왔었다.
1. 이번에는 여러 작업을 여러 테이블에서 처리하여 jsp에서 뿌려주는 방법을 알아본다.
먼저, 시작할 링크로 태그를 걸어준다.
<a href="/board/subject?sub_idx=1">인공지능과 자동화</a>
* 아직 많은 자료를 반복으로 처리해야할 지점이 아니기에 / '?쿼리'를 사용하여 get요청을 보낸다.
2. 그럼 url을 매핑시켜줄 Controller단
// 주제 페이지
@RequestMapping(value = "/subject", method = RequestMethod.GET)
public void getSubject(Model model,
@RequestParam(value = "sub_idx", required = false, defaultValue = "") int sub_idx) throws Exception {
List<BoardVO> subject = null;
subject = service.subject(sub_idx);
model.addAttribute("subject", subject);
List<BoardVO> list = null;
list = service.list(sub_idx);
model.addAttribute("list", list);
}
* @RequestPararm 어노테이션으로 파라미터를 받아둔다. int sub_idx 이름으로.
그리고 이를 활용해서 2가지 작업를 처리하는데; 서로 다른 테이블에서 사용해서 각각 결과를 받는다.
* 참고로 , 데이터로 받을 객체는 모두 VO파일에 정리되어 있어야 한다.
3. 그러면 이제 DAO와 Service단에 아래 코드를 추가 처리 한다.
public List<BoardVO> list(int sub_idx) throws Exception;
public List<BoardVO> subject(int sub_idx)throws Exception;
그리고 DAOImpl에는 아래 코드 추가
// 목록들
public List<BoardVO> list(int sub_idx) throws Exception {
HashMap<String, Object> data = new HashMap<>();
data.put("sub_idx", sub_idx);
return sql.selectList(namespace + ".list", data);
}
@Override
public List<BoardVO> subject(int sub_idx) throws Exception {
HashMap<String, Object> data = new HashMap<>();
data.put("sub_idx", sub_idx);
return sql.selectList(namespace + ".getSubject", data);
}
ServiceImpl에는 아래 코드 추가
@Override
public List<BoardVO> list(int sub_idx) throws Exception {
return dao.list(sub_idx);
}
@Override
public List<BoardVO> subject(int sub_idx) throws Exception {
return dao.subject(sub_idx);
}
4. 그리고 이제 데이터를 매퍼로 처리 작업.
<!-- list-->
<select id="list" resultType="com.project.model.BoardVO">
select
idx, text, nick, date, hcount
from board
WHERE sub_idx=#{sub_idx}
</select>
<!-- getSubject -->
<select id="getSubject" parameterType="hashMap" resultType="com.project.model.BoardVO">
SELECT title FROM
issue
WHERE sub_idx=#{sub_idx}
</select>
* 여기서 파라미터 타입이 위에는 없고, 아래에만 지정했다.
사실 Mybatis가 파라미터를 자동 인식 매핑하는 기능이 있기 때문에 따로 지정 안해도 된다.
5. 이제 마지막으로 subject.jsp파일만 보기 좋게 다듬어 주면 된다.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div class="theme">
<c:forEach items="${subject}" var="subject">
${subject.title}
</c:forEach>
</div>
<div>
<c:forEach items="${list}" var="list">
<div>
<span><fmt:formatDate value="${list.date}" pattern="yyyy-MM-dd HH:mm:ss" /></span>
<span>${list.nick}</span>
<span>${list.text}</span>
<span>${list.hcount}</span>
</div>
</c:forEach>
</div>
</body>
</html>
확인. 나이스.
728x90
'Programming > 스프링(spring) - Enterprise' 카테고리의 다른 글
스프링(spring)/ +더하기 4(1:1게시판 시스템) (0) | 2023.08.07 |
---|---|
스프링(spring)/ +더하기 3(세션 활용 게시물 등록) (0) | 2023.08.04 |
스프링(spring)/ +더하기 1(검색 시스템과 알림 시스템) (0) | 2023.08.02 |
스프링(spring)/ 회원 시스템 구축 4(암호화) (0) | 2023.08.02 |
스프링(spring)/ 회원 시스템 구축 3(회원정보 수정 및 탈퇴) (0) | 2023.08.01 |