본문 바로가기

Spring 게시판

[Spring] 게시판 목록(LIST)

우선 게시판 목록 부터 만들겠다

프로젝트 디렉토리는 아래와 같다.

 

 

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