본문 바로가기
  • Welcome J-Kyu Tstory
Spring/[CRUD기초]_게시판 만들기

[게시판]2. R(Read)_데이터 불러오기

by regularity 2022. 5. 7.
728x90

<사전작업 >
1.
프로젝트 기본 설정 [mariaDB연동] 
2. 데이터베이스 및 테이블 생성
3. 탐켓 서버 구축
4. 데이터삽입

 

 게시판에서 mariaDB로 부터 데이터를 불러오는 Read 기능 구축 

 

 

1. BoardVO 생성

▶com.board.domain 패키지 생성 -> BoardVO클래스 생성

▶root-conext에 domain 패키지 추가

<context:component-scan base-package="com.board.domain" />

▶테이블 생성한 칼럼을 참고하여 BoardVO 작성

package com.board.domain;

public class BoardVO {

	/*
	 CREATE TABLE tbl_board(
	bno		INT				NOT NULL AUTO_INCREMENT,
	title		TEXT				NOT NULL,
	writer	VARCHAR(10)		NOT NULL,
	content	VARCHAR(200)	NOT NULL,
	regdate	TIMESTAMP		DEFAULT NOW(),
	PRIMARY KEY(bno)
	);	
	 */
	private int bno;
	private String title;
	private String writer;
	private String content;
	private String regdate;
	
	//-------------------------------getter setter------------------------------
	
	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 getWriter() {
		return writer;
	}
	public void setWriter(String writer) {
		this.writer = writer;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public String getRegdate() {
		return regdate;
	}
	public void setRegdate(String regdate) {
		this.regdate = regdate;
	}
	
	//-------------------------------constructor------------------------------
	public BoardVO() {	//기본생성자
		
	}
	
	//매개변수 생성자
	public BoardVO(int bno, String title, String writer, String content, String regdate) {
		super();
		this.bno = bno;
		this.title = title;
		this.writer = writer;
		this.content = content;
		this.regdate = regdate;
	}
	
	//-------------------------------toString------------------------------
	@Override
	public String toString() {
		return "BoardVO [bno=" + bno + ", title=" + title + ", writer=" + writer + ", content=" + content + ", regdate="
				+ regdate + "]";
	}
	
}

 

 

 

2. mapper 에 쿼리문 작성

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.board.mapper.cboardMapper">

	<!-- 게시물 리스트 -->
	<select id="list" resultType="com.board.domain.BoardVO">
		select bno, title, writer, content, regdate
			from tbl_board
	</select>

</mapper>

 

3. com.board.dao 패키지 생성 및 BoardDAO인터페이스, BoardDAO구현 클래스 생성

▶root-context.xml에 패키지 등록

<context:component-scan base-package="com.board.dao" />

 

▶BoardDAO 인터페이스 생성

package com.board.dao;

import java.util.List;

import com.board.domain.BoardVO;

public interface BoardDAO {

	//게시물 리스트
	public List<BoardVO> list() throws Exception;
	
	
}

▶BoardDAO 구현 클래스 생성

package com.board.dao;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.board.domain.BoardVO;

@Repository
public class BoardDAOImpl implements BoardDAO {

	@Autowired
	SqlSession sql;
	
	private static String namespace = "com.board.mapper.boardMapper";
	
	//-----------------------------게시판 리스트------------------------------
	@Override
	public List<BoardVO> list() throws Exception {
		return sql.selectList(namespace+".list");
	}

}

 

4. com.board.service 패키지 생성 및 BoardService인터페이스, Boardservice구현 클래스 생성

▶root-context.xml에 패키지 등록

<context:component-scan base-package="com.board.service" />

 

▶BoardService 인터페이스 생성

package com.board.dao;

import java.util.List;

import com.board.domain.BoardVO;

public interface BoardService {
	
	//게시물 리스트
	public List<BoardVO> list() throws Exception;

}

 

▶BoardService 구현 클래스 생성

package com.board.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.board.dao.BoardDAO;
import com.board.domain.BoardVO;

@Service
public class BoardServiceImpl implements BoardService {

	@Autowired
	private BoardDAO dao;
	
	//--------------------------게시물 리스트------------------------------
	@Override
	public List<BoardVO> list() throws Exception {
		return dao.list();
	}

}

 

 

5. controller 생성

▶com.board.controller 안에->BoardController. java 생성

package com.board.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import com.board.domain.BoardVO;
import com.board.service.BoardService;

@Controller
@RequestMapping("/board/*")
public class BoardController {
	
	@Autowired
	private BoardService service;
	
	//--------------------------------게시물 리스트 ------------------------------
	@GetMapping("/list")
	public void getList(Model model) throws Exception{
		
		List<BoardVO> list = service.list();
		model.addAttribute("list",list);
	}

}

 

 

 

6. VIEW 작업 -> JSP 생성

▶src ->main->webapp->WEB-INF->Views 안에 board 폴더 생성 후 list.jsp 생성

(home.jsp를 복사해서 board 폴더에 붙여 넣은 후 이름 변경)

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
	<title>게시판 리스트</title>
</head>
<body>

	<h1>BOARD LIST</h1>
	<hr>
	<br>
	
	<table>
	 	<thead>
			<tr>
				<th>번호</th>
				<th>제목</th>
				<th>작성자</th>
				<th>작성일</th>
			</tr> 	
	 	</thead>
	 	
	 	<tbody>
	 		<c:forEach items="${list}" var="list">
	 			<tr>	
		 			<td>${list.bno}</td>
		 			<td>${list.title}</td>
		 			<td>${list.writer}</td>
		 			<td>${list.regdate}</td>
		 		</tr>	
	 		</c:forEach>
	 	
	 	</tbody>
	 	
	</table>

</body>
</html>

 

(※jquery 사용시 필요한 코드 추가)

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

 

7. 구동

 

8. 정상구동 확인

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90

'Spring > [CRUD기초]_게시판 만들기' 카테고리의 다른 글

[게시판]1. C(Create)_데이터 삽입  (0) 2022.05.08

댓글