Presentation Layer
package kr.smhrd.web;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import kr.smhrd.mapper.BoardMapper;
import kr.smhrd.model.BoardVO;
import kr.smhrd.service.BoardService;
@RestController
public class BoardRESTController {
@Autowired
private BoardService service;
@RequestMapping("/boardListAjax.do")
public List<BoardVO> boardListAjax(Model model) {
// @ResponseBody 생략 가능
List<BoardVO> list = service.boardListAjax(model);
return list;
}
@RequestMapping("/boardInsert.do")
public void boardInsertAjax(BoardVO vo) {
service.boardInsertAjax(vo);
}
@RequestMapping("/boardDelete.do")
public void boardDeleteAjax(int idx) {
service.boardDeleteAjax(idx);
}
@RequestMapping("/boardUpdate.do")
public void boardUpdateAjax(BoardVO vo) {
service.boardUpdateAjax(vo);
}
}
Business Layer
package kr.smhrd.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import kr.smhrd.mapper.BoardMapper;
import kr.smhrd.model.BoardVO;
@Service
public class BoardService {
// Business Layer 담당하는 클래스
// 로직들을 다 가지고 있을 수 있게끔 하는 클래스
// ex) if문, for문을 활용해서 작업, 받아온 데이터들을 다른 형태로 바꿔주는 로직을 짜는 등등
// service안쪽에는 RequestMapping을 쓰지 않는다!!!
// 요청 --> FrontController --> Controller(RequestMapping) --> Service --> Mapper --> DB
@Autowired
private BoardMapper mapper;
public List<BoardVO> boardListAjax(Model model) {
// @ResponseBody
// : 응답에 대한 제어권이 client에게 전부 되돌아간다.
// : !!!! converter가 로드가 되어있지 않으면 작동 불가능 !!!
List<BoardVO> list = mapper.boardList();
// List --- GSON ---> JSON
// List --- jackson ---> JSON
// 스프링 프레임워크는 jackson 라이브러리를 로드해주기만 하면
// 자동으로 json 구조로 변환 시켜준다.
return list;
}
public void boardInsertAjax(BoardVO vo) {
mapper.boardInsert(vo);
}
public void boardDeleteAjax(int idx) {
mapper.boardDelete(idx);
}
public void boardUpdateAjax(BoardVO vo) {
mapper.boardUpdateAjax(vo);
}
}
Persistence Layer
package kr.smhrd.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import kr.smhrd.model.BoardVO;
public interface BoardMapper {
public List<BoardVO> boardList();
public void boardInsert(BoardVO vo);
@Select("select * from board where idx=#{idx}")
public BoardVO boardContent(int idx);
// 쿼리문이 간단하다면 위쪽에 annotation 추가해서 처리할 수 있다.
@Delete("delete from board where idx=#{idx}")
public void boardDelete(int idx);
public void boardUpdate(BoardVO vo);
@Update("update board set contents=#{contents}, indate=now() where idx=#{idx}")
public void boardUpdateAjax(BoardVO vo);
}
'Java > Spring' 카테고리의 다른 글
[Spring] 게시판 로그인(jQuery+ajax+Session) (0) | 2022.07.25 |
---|---|
[Spring] 게시판 글 내용 수정(jquery+ajax) (0) | 2022.07.20 |
[Spring] 게시판 글 내용보기(jquery+ajax) (0) | 2022.07.20 |
[Spring] 게시판 글 삭제(jquery+ajax) (0) | 2022.07.20 |
[Spring] 게시판 글쓰기(jquery+ajax) (0) | 2022.07.20 |