- BoardController
package kr.co.gudi.board.controller;
import java.util.ArrayList;
import java.util.HashMap;
import javax.servlet.http.HttpSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
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 kr.co.gudi.board.dto.BoardDTO;
import kr.co.gudi.board.service.BoardService;
@Controller
public class BoardController {
@Autowired BoardService service;
Logger logger = LoggerFactory.getLogger(this.getClass());
@RequestMapping(value = "/list.do")
public String list(Model model, HttpSession session) {
logger.info("controller");
ArrayList<BoardDTO> list = service.list();
logger.info("list : "+list.size());
model.addAttribute("list", list);
//session에 msg 속성이 있다면 받아서 model에 옮겨담아줌
String msg = (String) session.getAttribute("msg");
if(msg != null) {
model.addAttribute("msg",msg);
//사용한 세션은 반드시 바로 삭제해야함
session.removeAttribute("msg");
}
return "list";
}
@RequestMapping(value="/write.go", method = RequestMethod.GET)
public String writeForm() {
return "writeForm";
}
@RequestMapping(value="/write.do", method = RequestMethod.POST)
public String write(HttpSession session, @RequestParam HashMap<String, String> params) {
if(session.getAttribute("loginId") != null) {
logger.info("write list controller 도착"+params);
int row = service.write(params);
logger.info("insert row : "+row);
}
return "redirect:/list.do";
}
@RequestMapping(value="/detail.do")
public String detail(HttpSession session, @RequestParam String idx, Model model) {
logger.info("detail controller 도착");
String page = "redirect:/list.do";
if(session.getAttribute("loginId") != null) {
logger.info("detail idx : "+idx);
BoardDTO dto = service.detail(idx);
logger.info("dto : {}",dto);
if(dto != null) {
model.addAttribute("board",dto);
page = "detail";
}
}
return page;
}
@RequestMapping(value="/del.do")
public String delete(HttpSession session, @RequestParam String idx, Model model) {
logger.info("detail idx : "+idx);
String msg = "삭제에 실패했습니다.";
if(session.getAttribute("loginId") != null) {
if(service.delete(idx) == 1) {
msg = "삭제에 성공했습니다.";
}
}
//redirect 시 데이터를 보낼 수 없기 때문에 session에 데이터를 넣어 보냄
session.setAttribute("msg", msg);
return "redirect:/list.do";
}
}
- BoardDTO
package kr.co.gudi.board.dto;
import java.sql.Date;
public class BoardDTO {
private int idx;
private String user_name;
private String subject;
private String content;
private int bHit;
private Date reg_date;
public int getIdx() {
return idx;
}
public void setIdx(int idx) {
this.idx = idx;
}
public int getbHit() {
return bHit;
}
public void setbHit(int bHit) {
this.bHit = bHit;
}
public Date getReg_date() {
return reg_date;
}
public void setReg_date(Date reg_date) {
this.reg_date = reg_date;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
- BoardService
package kr.co.gudi.board.service;
import java.util.ArrayList;
import java.util.HashMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import kr.co.gudi.board.dao.BoardDAO;
import kr.co.gudi.board.dto.BoardDTO;
@Service
public class BoardService {
@Autowired BoardDAO dao;
Logger logger = LoggerFactory.getLogger(this.getClass());
public ArrayList<BoardDTO> list() {
logger.info("list 요청");
return dao.list();
}
public int write(HashMap<String, String> params) {
logger.info("write 요청");
return dao.write(params);
}
public BoardDTO detail(String idx) {
logger.info("detail 요청");
//조회수 올리고, 상세정보 가져오기(Transaction)
dao.bHit(idx);
return dao.detail(idx);
}
public int delete(String idx) {
logger.info("delete 요청");
return dao.delete(idx);
}
}
- BoardDAO
package kr.co.gudi.board.dao;
import java.util.ArrayList;
import java.util.HashMap;
import kr.co.gudi.board.dto.BoardDTO;
public interface BoardDAO {
ArrayList<BoardDTO> list();
int write(HashMap<String, String> params);
BoardDTO detail(String idx);
void bHit(String idx);
int delete(String idx);
}
- board_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">
<!-- xml 을 java 에서 쓰기 위해 연결되는 interface 가 필요 하다. -->
<mapper namespace="kr.co.gudi.board.dao.BoardDAO">
<select id="list" resultType="kr.co.gudi.board.dto.BoardDTO">
SELECT * FROM bbs ORDER BY idx
</select>
<insert id="write" parameterType="hashmap">
INSERT INTO bbs(user_name,subject,content)
VALUES(#{user_name},#{subject},#{content})
</insert>
<select id="detail" parameterType="String" resultType="kr.co.gudi.board.dto.BoardDTO">
SELECT * FROM bbs WHERE idx = #{idx}
</select>
<update id="bHit">
UPDATE bbs SET bHit = bHit+1 WHERE idx = #{idx}
</update>
<delete id="delete" parameterType="String">
DELETE FROM bbs WHERE idx = #{param1}
</delete>
</mapper>
'코딩도전기 > Spring' 카테고리의 다른 글
CODO Day44_Spring(PhotoBoard) (0) | 2023.04.04 |
---|---|
CODO Day43_Spring(FileService) (0) | 2023.04.03 |
CODO Day41_Spring(MemberApp) (0) | 2023.03.30 |
CODO Day40_Spring(MyBatis) (0) | 2023.03.28 |
CODO Day39_Spring(DB 연결) (0) | 2023.03.28 |