Spring

Spring 게시판 글 작성, 삭제 로직

테라시아 2024. 12. 26. 16:55

☆ Code

 

★ BoardMapper.xml

<?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.koreait.board.mapper.BoardMapper">
	<insert id="insert">
		INSERT INTO TBL_BOARD(BNO, TITLE, CONTENT, WRITER)
		VALUES(NEXTVAL(SEQ_BOARD), #{title}, #{content}, #{writer})
	</insert>
	<insert id="insertSelectKey">
		<selectKey keyProperty="bno" order="BEFORE" resultType="long">
			SELECT NEXTVAL(SEQ_BOARD) FROM DUAL
		</selectKey>
		INSERT INTO TBL_BOARD(BNO, TITLE, CONTENT, WRITER)
		VALUES(#{bno}, #{title}, #{content}, #{writer})
	</insert>
	<select id="getList" resultType="boardVO">
		<![CDATA[
		SELECT BNO, TITLE, CONTENT, WRITER, REGDATE, UPDATEDATE
		FROM TBL_BOARD
		WHERE BNO > 0
		]]>
	</select>
	<select id="get" resultType="boardVO">
		SELECT BNO, TITLE, CONTENT, WRITER, REGDATE, UPDATEDATE
		FROM TBL_BOARD
		WHERE BNO = #{bno}
	</select>
	<update id="update">
		UPDATE TBL_BOARD
		SET TITLE = #{title}, CONTENT = #{content}, WRITER = #{writer}
		WHERE BNO = #{bno}
	</update>
	<delete id="delete">
		DELETE FROM TBL_BOARD
		WHERE BNO = #{bno}
	</delete>
</mapper>

 

★ BoardDao.java

import java.util.List;

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

import com.koreait.board.bean.BoardVO;
import com.koreait.board.mapper.BoardMapper;

@Repository
public class BoardDAO {
	@Autowired
	private BoardMapper mapper;
	
	public List<BoardVO> getList() {
		return mapper.getList();
	}
	
	public int register(BoardVO board) {
		return mapper.insertSelectKey(board);
	}
	
	public BoardVO read(Long bno) {
		return mapper.get(bno);
	}
	
	public int modify(BoardVO board) {
		return mapper.update(board);
	}
	
	public int remove(Long bno) {
		return mapper.delete(bno);
	}
}

 

★ BoardController.java

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.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import org.springframework.web.servlet.view.RedirectView;

import com.koreait.board.bean.BoardVO;
import com.koreait.board.dao.BoardDAO;

import lombok.extern.slf4j.Slf4j;

@Controller
@RequestMapping("/board/*")
@Slf4j
public class BoardController {
	
	@Autowired
	private BoardDAO dao;
	
	@GetMapping("list")
	public void list(Model model) {
		log.info("-------------------------------------------------->");
		log.info("Get List Called");
		model.addAttribute("list", dao.getList());
	}
	
	@GetMapping("register")
	public void register() {
		
	}
	
	@PostMapping("register")
	public RedirectView write(BoardVO board, RedirectAttributes rttr) {
		log.info("글 쓴댄다 : " + board);
		log.info(dao.register(board) + "건 등록 완료");
		
		rttr.addFlashAttribute("msg", board.getBno() + "번 글이 등록되었습니다.");
		
		return new RedirectView("list");
	}
	
	@RequestMapping("read")
	public void read(Long bno, Model model) {
		log.info("------------------------------>");
		log.info("read : bno =" + bno);
		model.addAttribute("vo", dao.read(bno));
	}
	

	@RequestMapping("remove")
	public RedirectView remove(Long bno, RedirectAttributes rttr) {
		log.info("------------------------------>");
		// log.info("삭제 건수 : " + dao.remove(bno));
		log.info("------------------------------>");
		
		if(dao.remove(bno) > 0) {
			rttr.addFlashAttribute("msg", "글 삭제에 성공하였습니다.");
		}
		else {
			rttr.addFlashAttribute("msg", "너 지금 뭐한거냐?");
		}
		
		return new RedirectView("list");
	}
}