[spring/mybatis] 게시판 리스트 출력
게시판 정보 테이블(Board)을 DB에서 불러와 간단하게 게시판 리스트를 출력하였다.
페이징기능과 검색기능은 나중에 추가하는걸로~~
Board.java
lombok을 이용하여 간단하게 setter, getter을 사용할 수 있다.
lombok을 이용하기 위해서는 pom.xml에서 dependency 하나만 추가하면 된다!
<!-- lombok : getter/setter 자동추가 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.0</version>
<scope>provided</scope>
</dependency>
@Data
public class Board {
private int boardNo; // 게시판번호
private String boardTitle; // 제목
private String boardContent; // 내용
private String boardWriter; // 작성자
private int readCount; // 조회수
private String regDate; // 작성날짜(YYYY-MM-DD hh24:mi)
private int priority; // 고정공지사항
private String fileName; // 파일이름
private String filePath; // 첨부파일경로
private int ncCount; // 댓글수
}
boardList.jsp
<c:forEach items="${list }" var="b" varStatus="i">
배열 요소를 반복적으로 처리하겠다는 의미로 controller -> service -> dao -> mapper -> db ... 를 통해
Board 테이블의 list를 가져와 list를 b로 정의하였다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:import url="/WEB-INF/views/common/header.jsp"/>
<div class="container">
<fieldset>
<legend>자유게시판</legend>
<c:if test="${not empty sessionScope.m && (sessionScope.m.memberLevel eq 0 || sessionScope.m.memberLevel eq 1)}">
<a class="btn btn-secondary" href="/boardWriteFrm.do" style="float:right; margin-bottom:5px;">글쓰기</a>
</c:if>
<table class="table table-hover">
<tr class="table-active">
<th scope="row">번호</th>
<th>제목</th>
<th>작성자</th>
<th>작성일</th>
<th>조회수</th>
</tr>
<c:forEach items="${list }" var="b" varStatus="i">
<tr class="table-default">
<td>${start + i.index+1 }</td>
<td><a href='/boardView.do?boardNo=${b.boardNo}' style="text-decoration:none;">${b.boardTitle}</a></td>
<td>${b.boardWriter}</td>
<td>${b.regDate}</td>
<td>${b.readCount}</td>
</tr>
</c:forEach>
</table>
</fieldset>
</div>
<c:import url="/WEB-INF/views/common/footer.jsp"/>
</body>
</html>
BoardController.java
return "board/boardList";
board 앞에는 자동으로 /WEB-INF/views/가 붙고, boardList 뒤에는 자동으로 .jsp가 붙는다.
두개 모두 합치면 /WEB-INF/views/board/boardList.jsp
boardList.jsp 페이지로 이동이 된다.
-> 자동으로 생성되게끔 설정하는건 servlet-context.xml에서 ~
//servlet-context.xml
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
//게시판
@RequestMapping(value="/board.do")
public String board(Model model) {
ArrayList<Board> list = service.boardList();
model.addAttribute("list",list);
return "board/boardList";
}
BoardService.java
public ArrayList<Board> boardList() {
ArrayList<Board> list = dao.boardList();
return list;
}
BoardDao.java
public ArrayList<Board> boardList() {
List<Board> list = session.selectList("board.boardList");
return (ArrayList<Board>)list;
}
boardSQL.xml
id값은 boardDao.java의 session.selectList("board.boardList"); 와 일치해야 한다!!!
그리고 parameterType의 b는 board를 의미하며, mybatis-config.xml 에 자주 사용하는 타입의 별칭을 지어주었다.
//mybatis-config.xml
<typeAliases>
<typeAlias type="kr.or.member.model.vo.Member" alias="m"/>
<typeAlias type="kr.or.board.model.vo.Board" alias="b"/>
</typeAliases>
<select id="boardList" parameterType="b" resultType="b">
select
board_no as boardNo,
board_title as boardTitle,
board_content as boardContent,
board_writer as boardWriter,
readCount,
regDate,
priority,
fileName,
filePath,
ncCount
from board
</select>