저번 시간에 mybatis-generator를 이용해서 mapper Interface, model, 그리고 xml mapper를 떨궜습니다. 이번 시간에는 이것을 이용해서, 모든 도서를 조회하는 API만 만들어 보겠습니다.

 


 프로젝트 구조는 아래와 같습니다.

 여기서 우리가 추가할 부분은, bookController, bookService입니다. 그리고, 바꿔야 할 부분은 application.properties입니다.

 

 

 먼저, server.port는 7780으로 설정하였습니다. 그리고, mybatis.mapper-locations를 classpath:mapper/**/*.xml로 설정했는데요.

 

 이는, mybatis-spring-boot-starter 때문입니다. 문서를 보시다 보면, Configuration 탭이 하나 있습니다. 여기에 맵퍼들 위치를 설졍하는 mapper-locations가 있어요. 이것은 mapper xml file들의 위치를 알려줍니다. 저는 클래스 패스에 mapper/**/*.xml이라고 적어 주었는데요. 이것은 mapper 밑에 있는 모든 xml 파일들을 의미합니다.

 

 예를 들어, mapper/**/*.xml은 mapper 밑에 있는 1.xml과 mapper 밑에 a 밑에 있는 2.xml과 매치됩니다.

 

 

 반면에 mapper/*/*.xml은 mapper의 a 밑에 있는 2.xml만 매치됩니다. 매퍼는 resource 폴더 밑의 mapper에 있었으므로, 매퍼의 위치는 classpath:mapper/**/*.xml로 한 것입니다. src/main/resource를 path로 잡고 있기 때문인 것이에요. 관심이 있으시다면, glob 패턴을 찾아보세요.

 


 mapper 역할을 하는 xml 파일들을 적어주었습니다. 이제 뭘 할까요? 모든 도서를 조회하는 get 요청을 받는 메소드 하나 만듭시다.

 

 

 bookService를 Autowired 합니다. bookservice의 selectAll을 봅시다.

 

 

 여기에서는, 그냥 sqlSession에서 Mapper를 하나 얻어옵니다. bookMapper를 하나 얻어와서 selectAll 메소드를 호출합니다.

 

 다음에 -DskipTests=true 옵션을 주어서, 테스트를 스킵하도록 합시다. 그러면, target 밑에 jar 파일이 하나 떨궈질 겁니다.

 


 이제, 떨궈진 jar 파일을 서버에 올립니다. 그 다음에, 같은 위치에 application.properties에 아래 내용을 입력하고 저장을 누릅니다. 저는 postgresql에 접속할 것이기 때문에 저리 설정을 하였습니다.

 

  요렇게 올라가야 합니다. 이제 get Request로 /book을 호출해 봅시다.

 

 

 send를 눌러 보겠습니다.

 

 

 그러면, db에 저장이 되어 있는 책 목록들이 잘 나옴을 알 수 있습니다. 다음 시간에 파라미터 등을 잘 넣어서 api를 만들어 보도록 하겠습니다.