우선 게시판 목록 부터 만들겠다
프로젝트 디렉토리는 아래와 같다.
BoardVO
public class BoardVO {
private int bno;
public int getBno() {
return bno;
}
public void setBno(int bno) {
this.bno = bno;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getWriter() {
return writer;
}
public void setWriter(String writer) {
this.writer = writer;
}
public String getRegdate() {
return regdate;
}
public void setRegdate(String regdate) {
this.regdate = regdate;
}
public String getUpdatedate() {
return updatedate;
}
public void setUpdatedate(String updatedate) {
this.updatedate = updatedate;
}
private String title;
private String content;
private String writer;
private String regdate;
private String updatedate;
}
lombok을 사용해도 되지만 일단 처음 공부하시는 분들을 위해 getter,setter를 선언해주었다
롬복을 사용할경우
@Data
@Getter
@Setter
어노테이션을 선언해주면된다.
BoardMapper.xml
<mapper namespace="Board">
<select id ="boardlist" resultType="com.my.project.model.BoardVO">
SELECT BNO,
TITLE,
CONTENT,
WRITER,
TO_CHAR(REGDATE,'YYYY-MM-DD HH:MI:SS') REGDATE,
TO_CHAR(UPDATEDATE,'YYYY-MM-DD HH:MI:SS') UPDATEDATE
FROM BOARD
ORDER BY BNO DESC
</select>
</mapper>
Date타입을 String 타입으로 변환하기위해 TO_CHAR() 함수를 사용했다.
BoardService
public interface BoardService {
public List<BoardVO> getList(BoardVO vo) throws Exception;
}
BoardService에 interface를 만든다.
게시판 목록을 List형식으로 받아올 것이기 때문에 List<> 타입으로 해준다.
VO객체를 만들어서 데이터를 전달한다.
그렇기에
List<BoardVO> 타입으로 service를 만들어준다.
BoardServiceImpl
@Service("BoardService")
public class BoardServcieImpl implements BoardService{
@Autowired
BoardDAO dao;
@Override
public List<BoardVO> getList(BoardVO vo) throws Exception{
return dao.getList(vo);
}
}
인터페이스에서 만들어놓은 Service를 @Override해준다.
BoardServiceImpl에서는 dao의 SqlSession 객체로 쿼리를 받아와야 리턴해줘야하기 때문에
return dao.getList(vo) 로 해준다.
BoardDAO
public interface BoardDAO {
public List<BoardVO> getList(BoardVO vo) throws Exception;
}
BoardDAO를 만들어준다.
BoardDAOImpl
@Repository
public class BoardDAOImpl implements BoardDAO{
@Autowired
SqlSession session;
@Override
public List<BoardVO> getList(BoardVO vo) throws Exception {
return session.selectList("Board.boardlist");
}
}
SqlSession 객체를 @Autowired로 DI주입해준다.
그리고 return문에서 Mapper에서 작성한 namespace와 select id값을 가져와 리턴해준다.
BoardController
@Controller
@RequestMapping("/board")
public class BoradController {
@Autowired
BoardDAO dao;
@Autowired
BoardService bs;
@RequestMapping(value = "/list")
public String boardList(Model model,BoardVO vo) throws Exception {
List<BoardVO> list = bs.getList(vo);
model.addAttribute("vo", list);
return "board/boardList";
}
}
BoardDAO, BoardService를 모두 가져와 DI 선언해준다.
Service,DAO에서 계속 전달했던 List<BoardVO> list로 선언하고
List<BoardVO>에 Service에서 dao를 리턴했던 메소드를 태워준다.
List<BoardVO> list = bs.getList(vo);
이렇게 할 경우 list 변수에 BoardService의 getList(vo) 값이 들어가게된다.
그리고 list를 model 객체에 담아서 view로 던져준다.
model.addAttribute("vo",list);
boardList.jsp
<div class="container">
<table class="table table-bordered" >
<tr>
<th>글번호</th>
<th>제목</th>
<th>글쓴이</th>
<th>날짜</th>
<th>등록일</th>
<th>최종수정</th>
</tr>
<c:forEach var="board" items="${vo}">
<tr>
<td>${board.bno}</td>
<td>${board.title}</td>
<td>${board.content}</td>
<td>${board.writer}</td>
<td>${board.regdate}</td>
<td>${board.updatedate}</td>
</tr>
</c:forEach>
</table>
</div>
Controller에서 Model에 "vo" 네임으로 보내줬기 때문에
<c:forEach items="vo"> 로받아준다.
'Spring 게시판' 카테고리의 다른 글
[spring] 프로젝트 설정 (0) | 2020.12.02 |
---|