도서관 api 토이 프로젝트를 하고 있습니다. 책을 추가하는 api를 개발하려고 하는데요. 추가가 성공적으로 되었다면, 추가된 record를 리턴하고 싶어요. auto_increment가 된 필드도 같이요. 어떻게 하면 좋을까요? 여기서 핵심은, 책을 추가할 때, bookClass와 bookName을 json으로 넘겨준다는 것입니다. bookId는 넘겨주지 않는데요. 이것은 자동 증가되는 serial이기 때문입니다. 그냥 책 데이터가 추가되면, 자동 증가되는 값입니다. [관련글] postgresql serial이 무엇인지 간단하게 알아봅시다. POST /book은 bookName과 bookClass를 받아서, book 테이블에 책 레코드를 추가합니다. 만약에 추가가 성공하면, bookId와 이름, Cla..
웹 검색 결과
mybatis의 xml mapper는 dynamic sql도 지원하고 있습니다. 저는 처음에 배울 때, if나 foreach 정도만을 써 왔는데요. trim도 알아두면 상당히 강력한 도구가 될 듯 싶습니다. 검색 api를 보면서 감을 잡아보도록 하겠습니다. 저번 시간에 모든 책을 get 하는 api를 작성한 적이 있었습니다. 이것을 Query 파라미터로 받게 바꾸어 보겠습니다. 저는 bookClass와 bookName을 선택적인 Query parameter로 받게끔 하였습니다. 만약에, 해당 Key가 없다면, null 값으로 들어갈 겁니다. 왜냐하면 모델 book의 bookClass는 int가 아닌 Integer로 선언되었기 때문입니다. 쿼리 결과는 위와 같이 나와야 합니다. 먼저 BookMapper의 ..
저번 시간에 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..
spring boot에서 mybatis를 편하게 쓰기 위해, mybatis generator를 쓰곤 합니다. 이클립스에서는 쉽게 할 수 있는데요. 인텔리제이는 그렇지 않더라고요. 공식 문서를 안 읽은 댓가를 호되게 치뤘는데요. 간단하게 데이터베이스에 있는 테이블 정보를 읽어와서 어떻게 mapper, interface, model 등으로 바꾸는지 알아보도록 하겠습니다. 저는 postgreSQL을 쓸 것이니, postgreSQL Driver를 추가하였습니다. 그리고 MyBatis Framework도 추가하였습니다. 그리고 스프링 Web 디펜던시도 추가하였습니다. 이 문서를 보면, maven에서 어떻게 설정하는지 나와 있는데요. 플러그인을 추가하는 형태인가 봅니다. 요래 추가하면, plugin에 mybatis..
저번에 bcrypt을 해서, 패스워드를 hashing 하는 것을 썼습니다. 이전 글에서 올려놨던 것과 비교하면 달라진 것이 딱 하나 있습니다. 인자가 하나 추가되었다는 점입니다. String pw 말고도, len을 받는 것이 하나 추가되었는데요. 이것은 strength를 받기 위해 쓰였습니다. 예를 들어, 이 값이 15라면 32768 round, 32768번 반복을 의미합니다. 17이라면 2^17인 131072번 반복을 의미합니다. 당연하게도, len에 지수 비례합니다. 이것은 어렵지 않게 postman 등으로 테스트 했을 때 나옵니다. 이렇게, strength를 정해 준 다음에는, 암호화된 패스워드와, 넘겨준 패스워드를 비교해서 match가 되면 accept를 떨어트려 주고, 그렇지 않으면 wrong을..
최근댓글