* 여러개의 게시판들중 게시판의 아이디를 기준으로 관련 글 목록을 불러오는 작업
이미 main 메서드에서 게시판 별 board_info_idx 값을 파라미터로 주입 받아 놓고 있다.
@Controller
@RequestMapping("/board")
public class BoardController {
...
@GetMapping("/main")
public String main(@RequestParam("board_info_idx") int board_info_idx, Model model) {
model.addAttribute("board_info_idx", board_info_idx);
return "board/main";
}
- JAVA 프로젝트
1. 게시판 제목 불러오기
1.1 Mapper 설정
public interface BoardMapper {
...
@Select("select board_info_name " +
"from board_info_table " +
"where board_info_idx = #{board_info_idx}")
String getBoardInfoName(int board_info_idx);
}
1.2 DAO 설정
@Repository
public class BoardDao {
@Autowired
private BoardMapper boardMapper;
...
public String getBoardInfoName(int board_info_idx) {
return boardMapper.getBoardInfoName(board_info_idx);
}
}
1.3 Service 설정
@Service
@PropertySource("/WEB-INF/properties/option.properties")
public class BoardService {
...
public String getBoardInfoName(int board_info_idx) {
return boardDao.getBoardInfoName(board_info_idx);
}
}
1.4 Controller 설정
@Controller
@RequestMapping("/board")
public class BoardController {
@Autowired
private BoardService boardService;
@GetMapping("/main")
public String main(@RequestParam("board_info_idx") int board_info_idx, Model model) {
model.addAttribute("board_info_idx", board_info_idx);
String boardInfoName = boardService.getBoardInfoName(board_info_idx);
model.addAttribute("boardInfoName", boardInfoName);
return "board/main";
}
1.5 views/board/main.jsp 설정
<h4 class="card-title">${boardInfoName }</h4>
여기까지가 게시판 별 제목을 불러오는 설정이다.
2. 글 목록 불러오기
2.1 쿼리문 작성
게시판 테이블에 작성자 명이 없기 때문에 user 테이블과 JOIN을 해서 작성자명 까지 가져와야 한다.
2.2 ContentBean에 작성자명을 받을 필드 추가
public class ContentBean {
...
private String content_writer_name; // DB에서 불러올 작성자명
2.3 Mapper 설정
public interface BoardMapper {
...
@Select("select a1.content_idx, a1.content_subject, a2.user_name as content_writer_name, to_char(a1.content_date, 'YYYY-MM-DD') as content_date " +
"from content_table a1, user_table a2 " +
"where a1.content_writer_idx = a2.user_idx " +
"and a1.content_board_idx = #{board_info_idx} " +
"order by a1.content_idx desc")
List<ContentBean> getContList(int board_info_idx);
2.4 DAO 설정
@Repository
public class BoardDao {
...
public List<ContentBean> getContList(int board_info_idx) {
return boardMapper.getContList(board_info_idx);
}
}
2.5 Service 설정
@Service
@PropertySource("/WEB-INF/properties/option.properties")
public class BoardService {
...
public List<ContentBean> getContList(int board_info_idx) {
return boardDao.getContList(board_info_idx);
}
}
2.6 Controller 설정
@Controller
@RequestMapping("/board")
public class BoardController {
@Autowired
private BoardService boardService;
@GetMapping("/main")
public String main(@RequestParam("board_info_idx") int board_info_idx
, Model model) {
model.addAttribute("board_info_idx", board_info_idx);
String boardInfoName = boardService.getBoardInfoName(board_info_idx);
model.addAttribute("boardInfoName", boardInfoName);
List<ContentBean> contentList = boardService.getContList(board_info_idx);
model.addAttribute("contentList", contentList);
return "board/main";
}
...
}
2.7 views/board/main.jsp 설정
<table class="table table-hover" id='board_list'>
<thead>
<tr>
<th class="text-center d-none d-md-table-cell">글번호</th>
<th class="w-50">제목</th>
<th class="text-center d-none d-md-table-cell">작성자</th>
<th class="text-center d-none d-md-table-cell">작성날짜</th>
</tr>
</thead>
<tbody>
<c:forEach var='obj' items="${contentList }">
<tr>
<td class="text-center d-none d-md-table-cell">${obj.content_idx }</td>
<td><a href='${root }board/read'>${obj.content_subject }</a></td>
<td class="text-center d-none d-md-table-cell">${obj.content_writer_name }</td>
<td class="text-center d-none d-md-table-cell">${obj.content_date }</td>
</tr>
</c:forEach>
</tbody>
</table>
- XML 프로젝트
JAVA 프로젝트와 다른 것만 표기
1. Mapper 설정
...
<mapper namespace="board">
...
<select id="getBoardInfoName" parameterType="java.lang.Integer" resultType="java.lang.String">
<![CDATA[
select board_info_name
from board_info_table
where board_info_idx = #{board_info_idx}
]]>
</select>
<select id="getContList" parameterType="java.lang.Integer" resultType="com.example.beans.ContentBean">
<![CDATA[
select a1.content_idx, a1.content_subject, a2.user_name as content_writer_name, to_char(a1.content_date, 'YYYY-MM-DD') as content_date
from content_table a1, user_table a2
where a1.content_writer_idx = a2.user_idx
and a1.content_board_idx = #{board_info_idx}
order by a1.content_idx desc
]]>
</select>
</mapper>
2. DAO 설정
@Repository
public class BoardDao {
@Autowired
private SqlSessionTemplate sqlSessionTemplate;
...
public String getBoardInfoName(int board_info_idx) {
return sqlSessionTemplate.selectOne("board.getBoardInfoName", board_info_idx);
}
public List<ContentBean> getContList(int board_info_idx) {
return sqlSessionTemplate.selectList("board.getContList", board_info_idx);
}
}
'프로젝트 > [SPRING MVC] 회원 관리' 카테고리의 다른 글
[SPRING MVC] 정보 수정 처리 (0) | 2022.05.22 |
---|---|
[SPRING MVC] 로그인 확인 처리(URL 직접 입력 접속 방지) (0) | 2022.05.21 |
[SPRING MVC] 로그아웃 그리고 로그인 시 메뉴 전 후 처리 (0) | 2022.05.20 |
[SPRING MVC] 로그인 처리 (0) | 2022.05.20 |
[SPRING MVC] 회원가입 저장 처리 (0) | 2022.05.19 |