Christmas Pikachu SPRING BOOT MVC구조 DB데이터 (조회)
Java Spring Boot

SPRING BOOT MVC구조 DB데이터 (조회)

ZI_CO 2022. 8. 1.

30 / 1 : 18 : 50

데이터를 DB에 저장을했으니 이제 그 데이터를 꺼내와서 볼수있도록 조회를 해보자

먼저 Controller클래스에서 POST 생성을했으니 GET으로 조회를 하자

 

 

 

 

 

KEY값과 VALUE값을 넣어주면 GET요청으로 데이터를 조회test를 할 수 있다.

 

 

 

 

DB에서데이터를 잘 가져오는지 확인을 했으면 이제 데이터를 조회 할수있도록 해보자!!! 

일단 TodoService인터페이스에서 이제 조회기능을 만들자!!!

추가기능에서는 addtodo에서 매개변수를 생성할 데이터(DTO)를 넣어줬으면,

조회기능에서는 List<?>를 써서 gettodolist 매개변수에 int page 값을 넣어주면 된다. 

 

 

 

 

 

 

TodoService에서 gettodolist를 만들었으면 당연히 TodoserviceImpl에서 @Override를 해주자

 

 

 

 

 

 

 

dto 하위 todo 하위에 TodoListRespDto클래스를 하나 만들어주자

 

 

 

 

 

DB에서 데이터를 가져올려면 먼저 DTO를 만들어줘야한다.  @Builder를 써서 컬러명을 작성을해주자

 

알아둘것!!!!!

DB에 데이터를 넣을때 entity객체를 만들어줄때는 스네이크 표기법을 사용했지만

DB에서 데이터를 가져올때는 카멜표기법을 써야한다!!! 

 

 

 

 

 

여기까지 toListDto를 다 만들었다. 

이제는 TodoReposiory에서 Todo를 리턴을 해줄거다

List써서 가져올 데이터(객체)Todo를 넣어주고 getTodoListofIndex메소드 매개변수는 int index값으로 넣어주자 

 

 

 

 

 

 

 

Todo.xml과 연결해주자!!!

 

 

 

 

 

DB의 컬럼명을과 리턴할 자료형들을 다 작성해줬으면 이제는 TodoServiceImpl에서 gettodolist를 호출해주자!

먼저 todoRepository.getTodoListofIndex를 설명하자면 여러컬럼명의 데이터를 가져올때는 List<?>형태로 들고온다. 

지금 getTodoListofIndex에서는 List<Todo>형태인거다 매개변수는 (int page)로 받고있다.  그것을 todoList객체안에 넣어줄것이다.

 

 

 

 

 

 

todoList의 객체를 이제 새로운 리스트만들어 추가를 해주자!!

리스트를 하나만든다 todoListRespDto를 담는 리스트를 todoListRespDtos변수에 new ArrayList로 리스트를 생성해서 담아준다.(즉, 리스트를 변수에 담아주는 과정? 이다)

그리고나서 todoList를 forEach를 돌려 람다를 써준다. todo를 꺼내서 todoListRespDtos에다가 add를 해준다. (todo.toListDto()) 해주고  todoListRespDtos에 리턴을 해준다.

 

 

 

 

 

 

 

 

Service에서 제네릭에 와일드카드를 써줬다 그런데 이 방법은 추천하지 않는다. 어떤 객체를 리턴할것인지 명확하게 명시를 해주는게 좋다. 왜냐하면 dto를 상속을해서 쓰는 경우가있다 그 경우에 와일드카드를 걸어서 extend해주면 해당 상속된 dto들만 리턴해주는게 가능하다. 

여기서는 지금 dto가 많지가 않다 그러니 리턴할 객체인 TodoListRespDto를 넣어주면 된다.

 

 

 

 

 

 

TodoService 인터페이스에서도 수정을 해줘야한다. 오류가 안뜬다고해서 수정을 안해주면 안된다.

(import까지 잘되었는지 확인!!!!)

 

 

 

 

 

 

이제는 Controller로 넘어가서 호출을해주면된다. 

이것도 전부 Service쪽에서 throws Excepction을 써서 예외처리를 던저놨기때문에 에러가 뜨는거다. 

여기서 try/catch를 해주면 에러는 사라진다. (빨간줄 마우스 가져다되고나서 try/catch선택!!!)

 

 

 

 

 

 

try/catch에서 이제 null 값에 data값이 들어가야한다. 성공시,실패시 data값은 list로 넣었다. list는 try/catch 밖에서  List<TodoListRespDto>객체를 초기화를 시켜주고나서, try/catch안에서  data값(todoService.gettodolist)값을 넣어주면 된다. 

 

 

 

 

 

 

이제 조회기능은 다 만들었다 그걸 확인하기 위해서 DB에 데이터가 많이 필요하다 왜냐고? 데이터를 20개씩 들고오도록 셋팅을 해놨기때문이다.

그래서 for문을 돌려서 n번 post요청을 해볼거다!!! 

 

 

 

 

 

 

 

 

 

1번코드에서 for문밖에서 일단.content라는 변수에 todoEntity객체안에있는 Todo_content를 get을 해준다!!

그리고 2번코드에서 for문이 시작된다. 100번!!!  100번의 Todo_content를 출력해주고 뒤에 i +1 즉 몇번을 반복했는지 숫자로 표시 해준다.  그리고 밑에 3번에서는 if문을 써서 improtance가 1일때와 0일때 번갈아가면서 데이터를 출력해준다. 

그리고나서 4번에서는 위에 모든데이터들을 for문이 한번돌았을때마다 todoEntity를 todoRepository.save에 값을 넣어준다. 리턴은 true!!!!

 

 

 

 

 

 

 

 

댓글