반응형

1. view.jsp에서 게시물 수정 옆에 게시물 삭제를 추가해주겠습니다.

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>게시물 조회</title>
</head>
<body>
<div id="nav">
	<%@ include file="../include/nav.jsp" %>
</div>
	<label>제목</label> ${view.title}
	<br />
	<label>작성자</label> ${view.writer}
	<br />
	<label>내용</label> ${view.content}
	
	<div>
		<a href="/board/modify?bno=${view.bno}">게시물 수정</a>
		<a href="/board/delete?bno=${view.bno}">게시물 삭제</a>
	</div>
	
</body>
</html>

2. BoardMapper에 쿼리 삭제 문을 추가하겠습니다.

<?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.mappers.board">

	<!-- 게시물 목록 
	resultType은 쿼리를 실행한 뒤 결과가 있을 경우에 사용하며, 
	반대로 데이터를 넣을 때는 parameterType을 사용
	-->
	<select id="list" resultType="com.board.domain.BoardVO">
		select
			bno, title, content, writer, regDate, viewCnt
		from tbl_board
	</select>
	
	<!-- 게시물 작성 
	데이터를 넣을 때는 parameterType을 사용
	-->
	<insert id="write" parameterType="com.board.domain.BoardVO">
		insert into
			tbl_board(title, content, writer)
				values(#{title}, #{content}, #{writer})
	</insert>
	
	<!--  게시물 조회 
	파라미터 타입은 매퍼에 들어오는 데이터, 리설트 타입은 매퍼가 내보내는 데이터입니다.-->
	<select id="view" parameterType="int" resultType="com.board.domain.BoardVO">
		select
			bno, title, content, regDate, viewCnt
		from 
			tbl_board
			where
				bno = #{bno}
	</select>
	<!-- 게시물 수정 -->
	<update id="modify" parameterType="com.board.domain.BoardVO">
		update tbl_board
			set
				title = #{title},
				content = #{content},
				writer = #{writer}
			where bno = #{bno}
	</update>
	
	<!-- 게시물 삭제 -->
	<delete id="delete" parameterType="int">
		delete
			from tbl_board
		where bno = #{bno}
	</delete>
	
</mapper>

3. DAO와 DAOImpl에 게시물 번호를 받아와 매퍼에 코딩한 delete를 실행하도록 합니다.

package com.board.dao;

import java.util.List;

import com.board.domain.BoardVO;

public interface BoardDAO {
		
		//게시물 목록
		public List<BoardVO> list() throws Exception;
		
		//게시물 작성
		public void write(BoardVO vo) throws Exception;
		
		//게시물 조회
		public BoardVO view(int bno) throws Exception;
		
		//게시물 수정
		public void modify(BoardVO vo) throws Exception;
		
		//게시물 삭제
		public void delete(int bno) throws Exception;
}
package com.board.dao;

import java.util.List;

import javax.inject.Inject;

import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;

import com.board.domain.BoardVO;

// DAO에 특화된 어노테이션. @Component 어노테이션을 써도 상관 없지만, DAO 클래스들에 @Repository 어노테이션을 사용함으로써
// @Component 어노테이션이 가진 특성과 함께, DAO의 메소드에서 발생할 수 있는 unchecked exception들을 스프링의 DataAccessException으로
// 처리할 수 있는 장점 또한 갖는다.
@Repository
public class BoardDAOImpl implements BoardDAO {
	
//	name으로 DI를 가능케 한다. 자바에서 지원하는 어노테이션이며 프레임워크에 종속적이지 않아 상사용해도 좋다.
//	타입으로 연결한다.
	@Inject
	private SqlSession sql;
	
	private static String namespace = "com.board.mappers.board";
	
	//게시물 목록
	@Override
	public List<BoardVO> list() throws Exception {
		// TODO Auto-generated method stub
		return sql.selectList(namespace + ".list");
	}
	
	//게시물 작성
	@Override
	public void write(BoardVO vo) throws Exception {
		
		sql.insert(namespace + ".write", vo);
		
	}
	//게시물 조회
	@Override
	public BoardVO view(int bno) throws Exception {
		
		return sql.selectOne(namespace + ".view", bno);
		
	}
	//게시물 수정
	@Override
	public void modify(BoardVO vo) throws Exception {
		sql.update(namespace + ".modify", vo);
		
	}

	@Override
	public void delete(int bno) throws Exception {
		sql.delete(namespace + ".delete", bno);
		
	}
	
	
	

}

4. BoardService와 BoardService에서 코드를 추가해줍니다.

package com.board.service;

import java.util.List;

import com.board.domain.BoardVO;

public interface BoardService {
	//게시물 목록
	public List<BoardVO> list() throws Exception;
	//게시물 작성
	public void write(BoardVO vo) throws Exception;
	//게시물 조회
	public BoardVO view(int bno) throws Exception;
	//게시물 수정
	public void modify(BoardVO vo) throws Exception;
	//게시물 삭제
	public void delete(int bno) throws Exception;
	
}
package com.board.service;

import java.util.List;

import javax.inject.Inject;

import org.springframework.stereotype.Service;

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

@Service
public class BoardServiceImpl implements BoardService {
	
	@Inject
	private BoardDAO dao;
	//게시물 리스트
	@Override
	public List<BoardVO> list() throws Exception {
		// TODO Auto-generated method stub
		return dao.list();
	}
	//게시물 작성
	@Override
	public void write(BoardVO vo) throws Exception {
		dao.write(vo);
		
	}
	//게시물 조회
	@Override
	public BoardVO view(int bno) throws Exception {
		
		return dao.view(bno);
	}
	//게시물 수정
	@Override
	public void modify(BoardVO vo) throws Exception {
		
		dao.modify(vo);
		
	}
	//게시물 삭제
	@Override
	public void delete(int bno) throws Exception {
		dao.delete(bno);
		
	}

}

5. Controller 에 코드를 추가합니다.

package com.board.controller;

import java.util.List;

import javax.inject.Inject;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

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

@Controller
@RequestMapping("/board/*")
public class BoardController {

	@Inject
	BoardService service;
	
	@RequestMapping(value = "/list", method = RequestMethod.GET)
	public void getList(Model model) throws Exception {
	
		List<BoardVO> list = null;
		list = service.list();
		
		model.addAttribute("list", list);
	}
	// 게시물 작성 (서버에서 사용자로 데이터 이동 GET메서드)
	@RequestMapping(value = "/write", method = RequestMethod.GET)
	public void getWrite() throws Exception{
		
	}
	
	//게시물 작성 (사용자에서 서버로 데이터 이동 POST메서드
	@RequestMapping(value = "/write", method = RequestMethod.POST)
	public String postWrite(BoardVO vo) throws Exception{
		service.write(vo);
		
		return "redirect:/board/list";
	}
	
	//게시물 조회
	@RequestMapping(value= "/view", method = RequestMethod.GET)
	public void getView(@RequestParam("bno") int bno, Model model) throws Exception{
		BoardVO vo = service.view(bno);
		model.addAttribute("view", vo);
	}
	
	//게시물 수정
	@RequestMapping(value = "/modify", method = RequestMethod.GET)
	public void getModify(@RequestParam("bno") int bno, Model model) throws Exception {
		
		BoardVO vo = service.view(bno);
		
		model.addAttribute("view", vo);
		
		System.out.println("view" + bno);
	}
	
	//게시물 수정
	@RequestMapping(value ="/modify", method = RequestMethod.POST)
	public String postModify(BoardVO vo) throws Exception{
		service.modify(vo);
		
		return "redirect:/board/view?bno=" + vo.getBno();
	}
	
	//게시물 삭제
	@RequestMapping(value = "/delete", method = RequestMethod.GET)
	public String getDelete(@RequestParam("bno") int bno) throws Exception{
		
		service.delete(bno);
		return "redirect:/board/list";
	}
}

6. 실행해서 삭제를 하면 정상적으로 삭제가 됩니다.

 

반응형
블로그 이미지

꽃꽂이하는개발자

,