본문 바로가기
스프링(Spring)/게시판 만들기

[Spring 게시판] 삭제(update문 사용)

by una⭐ 2020. 3. 13.

1. Controller(흐름제어)

 

BoardController

 

@Controller
public class BoardController {

  // 게시글 상세보기 - 게시글 삭제
	@RequestMapping(value = "/viewDel", produces="application/json")
	@ResponseBody
	public Map<String, Object> viewDel(@RequestParam int boardSeq, String current, HttpServletRequest request) throws Exception {
		
		boolean deleteResult = false;			//boardService.viewDel 결과값
		
		Criteria cri = new Criteria();
		
		logger.debug("Controller: viewDel() 입니다.");

		logger.debug("p_num은" + boardSeq + "=======================");
		
		HttpSession session = request.getSession();
		int sessionSeq = (Integer)session.getAttribute("sessionSeq");
		
		deleteResult = boardService.viewDel(boardSeq, sessionSeq); //게시글 삭제
		Map<String, Object> map = new HashMap<String, Object>();
		
		if(deleteResult) { //게시글 삭제 성공
			map.put("postDelResult", "1");
			map.put("perPageNum", cri.getPerPageNum());
			map.put("current", current);
		} else { //게시글 삭제 실패 (권한 없음)
			map.put("postDelResult", "0");
			map.put("current", current);
			
		}
		
		return map;
	
	}
		
}

 

2. Service(비즈니스 로직, DB 연동 이외의 작업)

 

BoardService

 

public interface BoardService {
	
	//게시글 상세-게시글 삭제
	public boolean viewDel(int boardSeq, int sessionSeq) throws Exception;
    
}

 

BoardServiceImpl

 

@Service("BoardService")
public class BoardServiceImpl implements BoardService {

	//게시글 상세-게시글 삭제
	@Override
	public boolean viewDel(int boardSeq, int sessionSeq) throws Exception {
		// TODO Auto-generated method stub
		
		int count = 0; 					//check board user
		boolean returnValue = false;	//return value
		
		count = boardDao.checkBoardUser(boardSeq, sessionSeq); //권한 확인
		
		if(count == 1) {		//session의 userSeq(로그인한 사용자)와 등록자의 userSeq가 일치하면
			boardDao.viewDel(boardSeq); //삭제
			returnValue = true; 		//삭제 성공
		}
		//else - userSeq가 일치하지 않음 -> 삭제 권한 없음. 
		
		return returnValue;
		
	}
    
}    

 

3. Model(비즈니스 로직, DB 연동 작업)

 

BoardDao

 

public interface BoardDao {

	public int checkBoardUser(@Param("boardSeq")int boardSeq, @Param("sessionSeq")int sessionSeq)throws Exception;
    	public void viewDel(int boardSeq) throws Exception;
 
 }

 

BoardDaoImpl

 

@Repository
public class BoardDaoImpl implements BoardDao {

	//게시글 삭제시 권한 확인 checkCommentUser
	@Override
	public int checkBoardUser(int boardSeq, int sessionSeq)throws Exception{
		
		HashMap<String, Object> map = new HashMap<String, Object>();
		map.put("boardSeq", boardSeq);
		map.put("sessionSeq", sessionSeq);
		
		int result = sqlSession.selectOne("com.ncomz.sample.dao.BoardDao.checkBoardUser", map);
		
		return result;
	}
    
    	//게시글 상세-게시글 삭제
	@Override
	public void viewDel(int boardSeq) throws Exception {
		// TODO Auto-generated method stub
		sqlSession.update("com.ncomz.sample.dao.BoardDao.viewDel", boardSeq);
	}
    
}

 

 

BoardDao.xml(SQL문)

 

<?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.ncomz.sample.dao.BoardDao">

	<!-- 게시글 삭제 시 권한 확인 -->
   <select id="checkBoardUser" parameterType="hashmap" resultType="int">
      select 
         count(*) 
      from 
         TB_JMJ_BOARD 
      where 
         boardSeq=#{boardSeq} 
      and 
         userSeq=#{sessionSeq}
   </select>
   
   <!-- 게시글 삭제 -->
   <update id="viewDel">
      UPDATE
         TB_JMJ_BOARD
      SET
         delete_yn = 'y'
      WHERE
         boardSeq = #{boardSeq}
   </update>

</mapper>

 

댓글