Programming/스프링(spring) - Enterprise

스프링(spring)/ +더하기 2(데이터베이스 상호작용, 주제별 게시판 만들기)

esoog Polaris 2023. 8. 4. 16:09
반응형

지금까지 데이터베이스를 활용해서 간단하게는 하나의 테이블에서 하나의 작업을 처리하여 결과물로 가져왔었다.

 

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