728x90
320x100
카카오 도서 검색 API를 사용하려고보니 ISBN 나 썸네일 이미지 등 가져올 수 있는 정보가 생각보다 디테일하고 많아서,
조금 더 풍부한 형태로 조회/등록/수정이 가능할 것 같아 이것저것 수정하게 되었다.
1. 일단 개발 편의성을 위해 다른 사이드에 적용했던 Xml에서 카멜 표기법을 적용해두었고
2. 또다른 개발 편의성을 위해 log4jdbc를 이용해 콘솔창에 쿼리문이랑 결과값이 테이블 형태로 뜨게끔 적용해두었다.
3. BOOK 테이블의 컬럼추가
카카오 도서 검색 API를 통해 얻은 정보를 BOOK 테이블에 몇 가지 추가저장해야 할 것 같아서 테이블에 컬럼을 (ISBN, PUBLISHER< THUMBNAIL_IMG) 3가지 추가하였고, BOOK객체도 수정하였다.
4-1. BOOK 객체 수정
Book.java
package seulgi.bookRentalSystem.domain.book;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
@Getter @Setter
@RequiredArgsConstructor
public class Book {
private String bookId;
private String bookName;
private String bookWriter;
private String authorId;
private String authorName;
private String isbn;
private String publisher;
private String thumbnailImg;
private String bookRentalId;
private String bookStateCode;
private String bookStateCodeName;
private String createDate;
}
4-2. EditForm 객체 수정
package seulgi.bookRentalSystem.domain.book;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@RequiredArgsConstructor
public class EditForm {
private String bookName;
private String bookWriter;
private String isbn;
private String publisher;
private String thumbnailImg;
private String bookStateCode;
}
5. 관련쿼리 수정
bookMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="seulgi.bookRentalSystem.domain.book.BookMapper">
<!-- 생략 -->
<select id="findByBookId" parameterType="String"
resultType="seulgi.bookRentalSystem.domain.book.Book">
SELECT
BOOK_ID
, BOOK_NAME
, BOOK_WRITER
, ISBN
, PUBLISHER
, THUMBNAIL_IMG
, AUTHOR_ID
, (SELECT MEMBER_NAME
FROM MEMBER_TB
WHERE MEMBER_ID = AUTHOR_ID ) AS AUTHOR_NAME
, BOOK_STATE_CODE
, (SELECT STATE_CODE_NAME
FROM BOOK_STATE_CODE
WHERE STATE_CODE = BOOK_STATE_CODE) AS BOOK_STATE_CODE_NAME
, CREATE_DATE
FROM BOOK
WHERE BOOK_ID = #{bookId}
AND USE_AT = 'Y'
ORDER BY createDate DESC
</select>
<select id="allBookList" resultType="seulgi.bookRentalSystem.domain.book.Book">
SELECT
BOOK_ID
, BOOK_NAME
, BOOK_WRITER
, ISBN
, PUBLISHER
, THUMBNAIL_IMG
, AUTHOR_ID
, (SELECT MEMBER_NAME
FROM MEMBER_TB
WHERE MEMBER_ID = AUTHOR_ID ) AS AUTHOR_NAME
, BOOK_STATE_CODE
, (SELECT STATE_CODE_NAME
FROM BOOK_STATE_CODE
WHERE STATE_CODE = BOOK_STATE_CODE) AS BOOK_STATE_CODE_NAME
, CREATE_DATE
FROM BOOK
WHERE USE_AT = 'Y'
ORDER BY createDate DESC
LIMIT #{offset}, #{limit}
</select>
<select id="countBooks" resultType="int">
SELECT COUNT(*)
FROM BOOK
WHERE USE_AT = 'Y'
</select>
<insert id="addBook" parameterType="seulgi.bookRentalSystem.domain.book.Book">
INSERT INTO BOOK
( BOOK_ID
, BOOK_NAME
, BOOK_WRITER
, AUTHOR_ID
, ISBN
, PUBLISHER
, THUMBNAIL_IMG
, BOOK_STATE_CODE
, CREATE_DATE
, USE_AT
) VALUES ( #{book.bookId}
, #{book.bookName}
, #{book.bookWriter}
, #{book.isbn}
, #{book.publisher}
, #{book.thumbnailImg}
, #{book.authorId}
, #{book.bookStateCode}
, now()
, 'Y'
)
</insert>
<update id="editBook" parameterType="java.util.Map">
UPDATE BOOK
SET BOOK_NAME = #{book.bookName}
, BOOK_WRITER = #{book.bookWriter}
, ISBN = #{book.isbn}
, PUBLISHER = #{book.publisher}
, THUMBNAIL_IMG = #{book.thumbnailImg}
, BOOK_STATE_CODE = #{book.bookStateCode}
WHERE BOOK_ID = #{bookId}
AND USE_AT = 'Y'
</update>
<select id="findByAuthorId" resultType="seulgi.bookRentalSystem.domain.book.Book">
SELECT
BOOK_ID
, BOOK_NAME
, BOOK_WRITER
, ISBN
, PUBLISHER
, THUMBNAIL_IMG
, AUTHOR_ID
, (SELECT MEMBER_NAME
FROM MEMBER_TB
WHERE MEMBER_ID = AUTHOR_ID ) AS AUTHOR_NAME
, BOOK_STATE_CODE
, (SELECT STATE_CODE_NAME
FROM BOOK_STATE_CODE
WHERE STATE_CODE = BOOK_STATE_CODE) AS BOOK_STATE_CODE_NAME
, CREATE_DATE
FROM BOOK
WHERE AUTHOR_ID = #{authorId}
AND USE_AT = 'Y'
ORDER BY createDate DESC
LIMIT #{offset}, #{limit}
</select>
<!-- 생략 -->
</mapper>
6. 책 전체조회 화면 수정
- 책 전제조회시 출판사와 썸네일 이미지도 작게 보일수 있도록 화면을 수정했다.
7. 책 단건조회 화면 수정
- 책 단건 조회시에도 출판사가 보이게끔 변경했다.
8. 책 단건수정 화면 수정
- 책 단건 수정하는 화면도 한번 등록하면 책정보는 수정할 수 없고 책 상태만 변경하도록 변경했다.
9. 책 등록화면 수정
책 등록화면은 거의 전면 수정했음. 직접입력하지 않고 도서검색 API를 사용할 거기 때문에 도서 검색 버튼을 만들어 버튼 클릭시 팝업창에서 도서 검색이 가능하게끔 만들 예정이고 그래서 화면을 이렇게 바꿈.
728x90
320x100
'💻 뚝딱뚝딱 > 팀내도서대여시스템(OBRS)' 카테고리의 다른 글
[개발일지#012] AWS(아마존 웹 서비스) 회원가입 하기 (0) | 2024.06.04 |
---|---|
[팀내도서대여시스템(OBRS) Ver.1)] 개발완료 보고 및 기능소개 / Ver2 개발예정인 기능 (0) | 2024.04.11 |
[개발일지#011] 회원정보수정 수정하기 (0) | 2024.04.11 |
[개발일지#010] 페이지네이션 적용하기 (회원목록 / 나의책 / 빌린책 / 모든책) (0) | 2024.04.11 |
[개발일지#009] 로그인 / 로그아웃 / 회원가입 수정 및 구현 (0) | 2024.04.10 |