본문 바로가기

Spring Boot

(33)
41: Springboot (Delete-board) Delete (Delete라 쓰고 Update라 읽는다) 구현 방법 우선 DB board table에 isDel 컬럼을 추가한다 isDeleted(enum 초기값 = N)를 Y로 업데이트 하는 Delete 기능을 구현할 것이다. isDel 값이 'Y'인 글은 출력이 안되게 만들어서 delete기능이지만 데이터는 남고 삭제되지는 않는다 Controller 쿼리를 작업하거나 데이터를 입력할때 헷갈리지 않게 updateIsDelBoardById 이름을 붙인다 // isDeleted : Y로 업데이트 시킴. // 요청URL은 DELETE http://localhost:8080/board/{id} @DeleteMapping(value = "/{id}") public ApiResponse updateIsDelBoa..
40: Springboot (Read-board) Read Board 에 글 읽기 기능을 수행하는 코드를 추가한다 요청 URL은 GET http://localhost:8080/board/{id} 으로 지정 Controller 코드이다. boardService의 getBoardById 로 URL에서 받은 변수 id를 넘겨준다 @GetMapping(value = "/{id}") public ApiResponse getBoardById(@PathVariable int id) throws Exception { return boardService.getBoardById(id); } Service부분의 코드. DAO의 getBoardById로 id값을 넘겨 수행하고 수행한 값을 return한다 public ApiResponse getBoardById(int id)..
38 : Springboot (insert - test, board) Controller TestController에서 PostMapping으로 insert하기 위해 아래 코드를 추가했다 @PostMapping(value = "/") public String insertTest(@RequestBody TestDTO testDTO) throws Exception { log.debug("insertTest"); return testService.insertTest(testDTO); } Service Controller에서 Service를 호출하면 Service에서 아래 비즈니스 로직을 처리한다 public String insertTest(TestDTO testDTO) throws Exception { // testDTO db에 insert int result = testDAO..
37 : Springboot (Board - Mybatis) Board Table과 연동 이번엔 boardList를 보여주기 위해 board디렉토리를 만들어 보자 board디렉토리도 MVC패턴 구조로 나누어서 아래 코드를 구성한다 controller - BoardController model - BoardDAO & BoardDTO service - BoardService 전 시간에 만들었던 Mybatis연동하여 Test 테이블을 보여주는 코드와 거의 유사하다! https://dwc04112.tistory.com/82 37- Springboot (MyBatis를 이용하여 MySQL 연동) 왜 MyBatis를 사용할까? JDBC만 사용하게 되면 Java소스 와 Query소스가 겹치게 되고 관리가 어려워진다 그리고 한 눈에 보기는 편하지만 짧은 쿼리만 있는 것이 아니라..
36-2 : Springboot (Service) Service Service의 역할은 DB에서 받아온 데이터를 전달받아 가공하는 것이다. Controller에서 요청받으면 적절한 Service에 전달하고, 전달받은 Service는 비즈니스 로직을 처리한다! > 처리 : DAO로 데이터베이스 접근하고 DTO로 데이터를 전달받아 처리 따라서 Service는 MVC패턴 중 model에 속한다고 볼 수 있다
36 : Springboot (MyBatis를 이용하여 MySQL 연동) 왜 MyBatis를 사용할까? JDBC만 사용하게 되면 Java소스 와 Query소스가 겹치게 되고 관리가 어려워진다 그리고 한 눈에 보기는 편하지만 짧은 쿼리만 있는 것이 아니라 엄청 길 수도 있다는 것! 1. DB 연결정보 등록 /src/main/resources/application.properties 파일 안에 DB의 연결정보를 등록한다 2. MyBatis 초기화 @Bean public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception { SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(d..
36-1 : Springboot (요청 방식 & Controller) @RestController @Controller에 @ResponseBody가 결합된 어노테이션이다. @RestController를 붙이면 컨트롤러 클래스 하위 메소드에 @ResponseBody 어노테이션을 붙이지 않아도 문자열과 JSON 등을 전송할 수 있다 @GetMapping @RequestMapping(method = RequestMethod.GET) 와 같은 형태로 GET 요청 방식의 API를 만들때 사용된다. (GET, POST, DELETE, PATCH) 방식이 있다 @Service를 붙여주어 Spring에서 이 클래스가 Service인 것을 알 수 있다
35 : BoilerPlate와 Lombok BoilerPlate DTO의 getter setter 를 BoilerPlate라고 한다 -1- 코드 구조에 따라 변수 이름만 바뀔 뿐 반복되는 코드들 -2- 표준화된 어플리케이션의 구조 패턴 (변경없이 재사용 가능한 코드들) 여기서 BoilerPlate로 코드가 길어지는 것을 lombok의 어노테이션으로 줄일 수 있다 (lombok 라이브러리는 저번시간에 maven에서 받아 pom에 추가시켰다.) @RequiredArgsConstructor는 모든 final field가 포함된 생성자를 생성한다. > TestDTO(int num, String name) 라는 생성자가 내부적으로 생성된 것이다.