여기 사이트에서 먼저 프로젝트 파일을 먼저 생성한다.
다 작성 했으면 밑에 GENERATE를 눌러준 후에 알집파일을 다운받아 알집을 풀고 깃허브 경로에 넣어준다.
일단 공부하면서 제일 먼저 할것은 공부하는 동안 spring버전을 2.6.6으로 고정을시키고 진행할거다. 제일 안정적인 버전이라고 한다. alt +F5 새로고침 하고나서 저장하기 필수
src/main/resources 폴더로 와서 서버 설정을 해준다.
※주의※ 여기서 코드 작성할때는 탭(띄어쓰기 4칸)을 적용하면 안된다. 무조건 띄어쓰기 2칸으로 하위로 들어가야한다.
application.properties -> application.yml확장명으로 반드시 파일명을 바꿔 줘야한다.
그리고 해야하는 순서는 서버를 셋팅을 했으니 서버가 잘돌아가는지 테스트를 해봐야한다.
1. 패키지를 하나 만들어준다.
패키지의 경로는 아래와 같다.
2. 클래스를 api하위에 PracticeController 이라고 하나 만들어준다.
@RestController = @Controller + ResponseBody :
주용도는 Json 형태로 객체 데이터를 반환하는 것
위의 @Controller가 Data를 반환하는 경우와 같은 케이스를 커버한다고 생각하면된다.
@RequestMapping("/api/v1/practice") : 모든 메소드 경로 앞에 /api/v1/practice 주소가 붙는다.
3. web하위에 dto 패키지를 하나 만들어준다.
dto패키지 하위에 CMRespDto 클래스를 만들어준다.
@NoArgsConstructor : 기본생성자
@AllArgsConstructor : 전체생성자
@Data : getter, setter, hascCode, equals, toString
null값에 CMRespDto를 리턴을 시켜준다.
addcontent이기에 PostMapping로 잡아주고 주소는("todo")라고 해준다.
3. 이제는 postman으로 테스트를 할것이다 하기전에 db충돌로인한 에러를 방지하기위해서 pom.xml에서 mariadb와, mybatis를 주석 처리를 해준다. (주석은 <!-- 치면 자동완성기능 적용)
그리고 서버를 실행시켜 준다.
postman에서 서버연결을 확인 하면된다.
post연결이 양호한걸 확인했으면 post요청할때는 데이터 요청도 같이 해야한다.
값이 필요하니깐 Dto가 필요하다.
dto패키지 하위에 todo패키지를 하나 생성한다.
todo패키지 안에 CreateTodoreqDto를 하나 만들어준다.
PracticeController에서 @RequestBody(데이터 전송)로 받아준다
postman에서 데이터가 잘들어오는지 확인해보자
데이터가 잘들어온다.!!!
데이터가 잘 넘어오는지 확인을 했으면 이제는 service로 넘겨줘야한다.
그전에 패키지 셋팅먼저 하고 진행하자
com.jihuntest.practice 하위에 service하위에 todo패키지와 com.jihuntest.practice 하위에domain하위에 todo패키지 두개를 만든다.
service하위 todo에서 인터페이스를 만든다.
인터페이스에서는 어떤 기능을 넣을것인지 정의를 해준다.
추가에서는 추가된걸 확인용을 쓸거다.
인터페이스를 만든었으니 TodoServiceImpl클래스도 하나 만들어준다.
서비스이니깐 @Service를 달아준다 이유는 @Service를 달아줘야 IoC에 등록이된다.
TodoService(인터페이스)와 연결(implements)를 해준다.
그리고 TodoSevice에서 //추가 기능인 메소드 createTodo를 @Override를 해주고,
만약에 예외처리가 발생시 TodoServiceImpl에서 잡아주지않고 PracticeController에서 잡아주기 위해
throws Exception을 써서 넘겨준다.
createTodoReqDto가 잘 전달됬는지 확인을 해야한다.
PracticeController에서 @Service를 써서 IoC에 등록된걸 private final TodoService, @RequiredArgsConstructor써서 불러올수가있다. 쉽게 말하자면 TodoServiceImpl에 TodoService를 업캐스팅된 개념으로 보면 된다.
todoServiceImpl createTodo안에있는 데이터(createTodoReqDto)전달을해준다.
오류발생!!!! 이유는?
TodoServiceImpl에서 @Override를한 createTodo메소드를 throws Exception으로 던져놓고
@RequestBody(데이터)로 CreateTodoreqDto를 받아준다. 그럼 여기까지 throws Exception(예외처리)가
넘어 왔기때문에 try/catch로 처리를 해줘야한다. 현재 밑에 그림에서는 try/catch로 잡아주지 않았기 때문에 빨간줄이
뜬것이다.
빨간줄에 마우스 가져다 되면 try/catch로 잡아주면 오류는 사라진다.
여기서 데이터가 잘 전달이 됬는지 안됬는지 예외처리 확인을 try/catch로 한다고했다.
try에서 데이터를 전달이 실패했을시 오류(예외처리)를 확인이되면, 서버 문제인것이다 그럼 catch로 넘어가게 되고,
여기서 catch에서 오류(예외처리)잡아 예외처리를 알려준다. 데이터 전달이 실패를 했으니 ok가 아닌 internalServerError()를 써서 잡아주고, -1코드 값을 전달해준다.
오류가 발생하면 예외처리를 잘해주는지 확인해보기 위해서 강제로 예외처리를 줘서 테스트 해보자!!
예외처리가 잘 된것을 확인 할 수가있다.
domain.todo패키지 하위에 Todo라는 클래스를 하나 만든다.
코드를 작성하기전에 DB에서 먼저 컬럼명을 설계를 해줘야 한다.
DB에서 설계가 다끝났으면 이제 코드를 작성해주자.
DB에 데이터를 넣어주려면 일단 DB 컬럼명 동일하게 순선대로 만들어주면 된다.
여기서 @Builder은 toEntity를 해주려고 쓰는 것이다. (즉, Todo를 생성하기 위함이다.)
그이유는 TodoServiceImpl에서 createTodo실행시 CreateTodoReqDto를 받아주는데 이것을 Entity로 변환을 해주기 위해서 이다.
<@Builder을 왜 했는가? toEntity를 해주기 위해서 이다.>
Todo를 생성 해줄수 있게끔 @Builder을 해준다. 호출은 CreateTodoReqDto!!!
CreateTodoReqDto로 전달받은 데이터를 Entity로 전달을 해줘야한다.
toEntity를 만들어줬으니 TodoServiceImpl에서 createTodoReqDto를 toEntity해주면 된다.
dto를 toEntity로 변화시켜 todoEntity객체가 됬다.todoEntity객체를 이제 save로 던저준다.
save는 TodoRepository에 만들어 넣어둘것이다.
일단 먼저 TodoRepository 인터페이스를 하나 만들어주자!!!
여기서 save를 만들어준다. 그리고나서 mappers폴더에 있는 Todo.xml과 연결해줘야한다 그럴려면
TodoRepository에 @Mapper을 달아줘야한다.
@Mapper은 maibatis가 있어야만 쓸수가있다. 그래서 초반에 테스를위해서 db충돌을 피하기위해서 pom.xml에서
mariadb와 mybatis를 주석처리한걸 풀어준다.
mariadb, mybatis주석처리 해제
그리고나서 db주소, 아이디 비밀버호, 드라이브, mybatis경로를 셋팅을 application.yml에서 해준다.
mybatis활성화시키고 경로도 셋팅해줬고 DB셋팅도 해줬으니 이제 Repository에서 @Mapper을 쓸수가있다
그럼 이제 다시
위에 TodoServiceIml에서 todoEntity객체를 save에 빨간줄이 떴는데
TodoRepository를 만들어줬으니 이제 오류를 없애보자
세트라고 되어있는건 인터페이스에서 TodoRespository를 불러와야하니깐 private final을 써준다.
private final을 쓰려면 무조건 @RequiredArgsConstructor와 같이 써줘야한다.
이제 DB와 연결이 가능하다. 그럼 일단 mappers폴더에서 Todo.xml을 만들어주자!!
이제는 여기서는 config코드를 작성해야한다. 근데... 너무 귀찮다.... 그래서 일부코드를 mybatis사이트에서 가져올것이다.
사이트주소 https://mybatis.org/mybatis-3/getting-started.html
mybatis config코드
원래는 mybatis셋팅을 하려면 config.xml파일 만들어줘야한다 그런데 application.yml에서 작성을 해줬다
그래서 밑에있는 코드는 작성할 필요가 없다.(이코드는 JAVA & JSP에서 쓰고 싶을때 사용하면된다.)
이렇게 yml에서 이미 셋팅을 했다
우리가 지금 Todo.xml에 필요한것은 이부분이다!!!. 복사~ 붙혀넣기~
이코드가 작성하는 원리는 PUBLIC 부분이 링크이다. 여기의 링크를 타고 들어가는 것이다. 이부분의Config는 수정 X
여기까지 작성을했으면 DOCTYPE을 수정을해줘야한다. 이건지금 configuration용이기때문이다
수정한 코드
밑에 빈공간에서 ctrl + 스페이스를 누르면 mapper를 쓸수있게 나온다. 위에서 mapper로 수정했는데 mapper로 잡혀있지 않으면 사용을 할수가 없다.
<mapper> 안에서 ctrl + 스페이스를 누르면 사용할수있는 속성들이 나온다. 속성중 namespace가 있다
namespace선택!!!!
여기 xml파일에서 mapper로 잡아주면 select, insert, update, delete 쿼리문을 작성이 가능하다. 원래라면 DAO라는 클래스 파일에다가 하나하나 다 만들었지만 그방법 대신 이제는 xml 파일에다가 작성할거다.
쿼리문 작성은 한것을 이제는 연결을 해야한다. 연결은 namespace에서 인터페이스 경로를 잡아주면된다!
주소는 TodoServiceImpl에서 private final TodoRepository를 해주면 import가된다. 위에 import가 된 주소를 복사에서 가져오면된다.
TodoServiceImpl에서 todoEntity객체를 save를 해줬다 그러면 TodoRepository에서 save를 받아주고 여기서 @Mapper를 써서 Todo.xml과 연결을 가능하게끔 해줬다 그럼 연결이된 Todo.xml로 넘어간다. 넘어오게되면 insert를 이용하여 id에 메소드명을 넣어주면된다. 그럼 id는 연결할 메소드명 save를 넣어주면 된다.(맵핑을해준것)
여기까지했으면 연결 완료!!!
이제는 parameterType를 잡아줘야한다. parameterType는 save뒤에서 자동완성을 써서 작성해주면된다.
parameterType는 save객체에 매개변수로 넣어준 Todo경로를 작성해주면된다.
이제 DB와 연결을 완벽하게 됬다.
만약 DB명이 생각이 안난다. 그럼 application.yml에서 DB를 연결한 url경로에서 확인하면 된다.
이제 컬럼명 순서에 맞게 쿼리문을 작성하면된다. (DB컬럼명과 Todo클래스에 있는 컬럼명과 순서 동일!!!!!!)
이렇게 DB컬럼명 순서에 맞도록 했으면 이제 Todo.xml에서 쿼리문은 작성을 하면된다.
여기까지 했으면 데이터를 서버에 보내서 서버에서 DB에 보낼수있도록 가공을해서 보내 주는 단계까지 온거다.
그럼 이제 데이터를 보내서 DB에 데이터가 잘 들어갔는지 확인해보자
여기까지가 데이터를 DB에 추가하는 과정이다. 데이터가 이제 DB에 저장이 됬으면 그걸 불러와 조회 하는 방법을 알아보자!!!!
보시면서 정리부분에서 잘못되거나 좀더 가독성이 코드 아시면 알려주시면 감사하겠습니다.
많은 피드백 댓글로 부탁드려요!!!
'Java Spring Boot' 카테고리의 다른 글
스프링 프레임워크란?? (0) | 2024.02.27 |
---|---|
Spring Boot Security - 프로젝트생성, 시큐리티 커스텀, User권한 (0) | 2022.08.09 |
SPRING BOOT MVC구조 DB데이터 (조회) (0) | 2022.08.01 |
댓글