@RequestMapping("/board/*") // 경로와 해당하는 컨트롤러를 매칭 할 수 있게 해주는 영역
@AllArgsConstructor // 클래스의 모든 필드에 대한 생성자를 자동으로 생성
public class BoardController {
private BoardService service;
@GetMapping("/list") //localhost:8080 list 요청이 들어오면 아래의 함수를 실행.
public void list(Model model) {
log.info("list");
model.addAttribute("list",service.getList());
}
@PostMapping("/register") //주어진 URI 표현식과 일치하는 HTPP POST 요청을 처리
public String register(BoardVO board, RedirectAttributes rttr) {
log.info("register: + board");
service.register(board);
rttr.addFlashAttribute("result",board.getBno());
return "redirect:/board/list";
}
@GetMapping("/get/") //localhost8080 get 처리가 들어오면 아래의 함수를 실행
public void get(@RequestParam("bno") Long bno,Model model) {
log.info("/get");
model.addAttribute("board",service.get(bno));
}
@PostMapping("/modify") //요청처리, 주어진 URI 표현식과 일치하는 HTPPPOST 요청을 처리
public String modify (BoardVO board, RedirectAttributes rttr) {
log.info("modify: "+ board);
if(service.modify(board)) {
rttr.addFlashAttribute("result","success");
}
return "redirect:/board/list";
}
@PostMapping("/remove") //요청처리,주어진 URI 표현식과 일치하는 HTPPPOST 요청을 처리
public String remove(@RequestParam("bno")Long bno, RedirectAttributes rttr) {
log.info("remove. . . " + bno);
if(service.remove(bno)) {
rttr.addFlashAttribute("result","success");
}
return "redirect:/board/list";
}
@GetMapping("/register")
public void register() {
}
@GetMapping("/readone")
public void read_one(Model model) {
log.info("read one page open");
model.addAttribute("board",service.getone());
}
@GetMapping("/getcount")
public void howmany(Model model) {
model.addAttribute("count",service.getcount());
}
@GetMapping("/getmax")
public void get_max(Model model) {
model.addAttribute("bno",service.getmax());
}
}
------------------------------------
Mapping
BaordMapper
package org.zerock.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Select;
import org.zerock.domain.BoardVO;
public interface BoardMapper {
//@Select("select * from tbl_board3 where bno > 0")
public List<BoardVO> getList();
public void insert(BoardVO board);
public void insertSelectKey(BoardVO board);
public BoardVO read(Long bno);
public int delete(Long bno);
public int update(BoardVO board);
public BoardVO getone();
public int getcount();
public int getmax();
}
-------------------------------------------
Service
package org.zerock.service;
import java.util.List;
import org.zerock.domain.BoardVO;
public interface BoardService {
public void register (BoardVO board);
public BoardVO get(Long bno);
public boolean modify(BoardVO board);
public boolean remove (Long bno);
public List<BoardVO> getList();
public BoardVO getone();
public int getcount();
public int getmax();
}
------------------------------------
BoardServiceimpl
package org.zerock.service;
import java.util.List;
import org.springframework.stereotype.Service;
import org.zerock.domain.BoardVO;
import org.zerock.mapper.BoardMapper;
import lombok.AllArgsConstructor;
import lombok.Setter;
import lombok.extern.log4j.Log4j;
@Log4j //프로그램이 돌아가면서 필요한 내용에 대한 로그를 남기는 기능을 제공
@Service // 정보를 가공하여 Controller 에게 데이터를 넘긴다.
@AllArgsConstructor // 모든 필드에 대한 생성자를 생성합니다.
public class BoardServiceimpl implements BoardService {
private BoardMapper mapper;
@Override
public void register(BoardVO board) {
}
@Override
public List<BoardVO>getList(){
log.info("getList . . . ");
return mapper.getList();
}
@Override
public BoardVO get(Long bno) {
log.info("get . . ."+bno);
return mapper.read(bno);
}
@Override
public boolean modify(BoardVO board) {
log.info("modify . . ."+board);
return mapper.update(board)==1;
}
@Override
public boolean remove(Long bno) {
log.info("remove . . . "+ bno);
return mapper.delete(bno)==1;
}
@Override
public BoardVO getone(){
return mapper.getone();
}
@Override
public int getcount(){
return mapper.getcount();
}
@Override
public int getmax(){
return mapper.getmax();
}
}
----------------------
BoardVO
package org.zerock.domain;
import java.util.Date;
import lombok.Data;
@Data
public class BoardVO {
private Long bno;
private String title;
private String content;
private String writer;
private Date regdate;
private Date updateDate;
}
------------------------------------------
Controller
@GetMapping("/list")//localhost:8080 list 요청이 들어오면 아래의 함수를 실행.
public void list(Model model) {
log.info("list");
model.addAttribute("list",service.getList());
}
BoardMapper
public interface BoardMapper {
public List<BoardVO> getList();
Service
public interface BoardService {
public void register (BoardVO board);
}
BoardServiceimpl
public class BoardServiceimpl implements BoardService {
private BoardMapper mapper;
@Override
public List<BoardVO>getList(){
log.info("getList . . . ");
return mapper.getList();
}
BoardVO
public class BoardVO {
private Long bno;
}
------------------------------------------
@Override = 오버라이딩을 올바르게 했는지 컴파일러가 체크한다. 상속받은 메서드를 재정의할 때 메서드 이름이 틀리지 않게 쓰기 위한 어노테이션 @Controller - 모델과 뷰를 연결시켜줌
@RequestMapping() 경로와 해당하는 컨트롤러와 매칭할 수 있도록 해주는 기능
@Log4j 프로그램이 돌아가면서 필요한 내용에 대한 로그를 남기는 기능을 제공
객체를 주입받는 방법 @Autowired =@Autowired란 스프링 컨테이너에 등록한 빈에게 의존관계주입이 필요할 때, DI(의존성 주입)을 도와주는 어노테이션이다. @AllArgsConstructor = - 모든 필드에 대한 생성자를 생성합니다. 또한 의존성 주입 할 대상이 많아졌을 때 훨씬 깔끔합니다. 클래스의 모든 필드에 대한 생성자를 자동으로 생성합니다.
@Service DB에서 받아온 데이터를 전달받아 가공하는 것이다 . 내부에서 자바 로직을 처리함 알맞은 정보를 가공하여 Controller 에게 데이터를 넘긴다.
@RequiredArgsConstructor 클래스의 final 필드에 대한 생성자를 자동으로 생성합니다. final 필드는 클래스에서 초기화를 하던지 객체 생성 시 생성자를 이용해 꼭 초기화해줘야 합니다.
@GetMapping("/list") localhost:8080/list 요청이 들어오면 아래의 함수를 실행.
@PostMapping("/register") 요청처리,POST 통신을 할때는 어노테이션이있는 메소드는 주어진 URI 표현식과 일치하는 HTTP POST 요청을 처리합니다. 주어진 URI 표현식과 일치하는 HTTP POST 요청을 처리. (에노테이션은 주석이라는 의미를 가진다,컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공) @RequestMapping(value = "/register",method = {requestMethod.POST}) 을 줄여 쓸 수 있음. 간단하게 사용 가능