반응형

Spring boot로 Rest API 만들기 간단 예제 (2)입니다.

Oracle 데이터베이스를 기반으로 하여 VO와 DAO, Mapper 파일까지 만들어보겠습니다.


 

0. 이전 글 참고

- [SPRING BOOT] REST API 간단 예제 - (1) 프로젝트 생성

 

 

1. 환경

- Visual Studio Code : 1.61.2 version

- Spring boot : 2.6.2 version / gradle

- java 11

 

 

2. 데이터베이스 Table 생성

CREATE TABLE BOOK_INFO_TBL
  (
    BOOK_KEY            NUMBER NOT NULL,
    BOOK_REG_NO         VARCHAR2(12 BYTE) NOT NULL,
    BOOK_TITLE          VARCHAR2(1000 BYTE),
    BOOK_AUTHOR         VARCHAR2(1000 BYTE),
    BOOK_PUBLISHER      VARCHAR2(1000 BYTE)
  );

- BOOK_INFO_TBL이라는 테이블을 생성했습니다.

- 책과 관련된 정보들을 저장하는 테이블입니다.

 

 

3. BookInfoVO.java

package com.test.demo.vo;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;

@Getter 
@Setter
public class BookInfoVO {

   @JsonProperty(value="book_key")
   private int book_key;
   
   @JsonProperty(value="book_reg_no")
   private String book_reg_no;
   
   @JsonProperty(value="book_title")
   private String book_title;
   
   @JsonProperty(value="book_author")
   private String book_author;
   
   @JsonProperty(value="book_publisher")
   private String book_publisher;
   
}

- 데이터베이스 테이블에 생성한 컬럼들을 모두 가져왔습니다.

- @JsonProperty에 value를 주어 더 명확하게 했습니다.

- @Getter@Setter lombok을 사용해서 getter와 setter를 자동 생성했습니다.

 

 

4. BookInfoDAO.java

package com.test.demo.dao;

import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import com.test.demo.vo.BookInfoVO;

@Mapper
public interface BookInfoDAO {

  List<BookInfoVO> selectAllBookInfo();
  BookInfoVO selectByKey(String book_key);
  void insert(BookInfoVO bookInfo);
  void update(BookInfoVO bookInfo);
  void delete(String book_key);
  
}

- Mapper 방식을 사용하기 위해 @Mapper를 선언했습니다.

- book 테이블을 CRUD 할 수 있도록 select, insert, update, delete를 선언했습니다.

 

 

5. Mapper 생성 (BookInfoSQL.xml)

- resources 하위 폴더에 mappers 폴더를 생성하고 그 안에 BookInfoSQL.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="com.test.demo.dao.BookInfoDAO">
   <select id="selectAllBookInfo" resultType="BookInfoVO">
      SELECT 	*
      FROM	BOOK_INFO_TBL
   </select>
   <select id="selectByKey" parameterType="String" resultType="BookInfoVO">
      SELECT 	*
      FROM	BOOK_INFO_TBL
      WHERE	book_key = #{book_key}
   </select>
   <insert id="insert" parameterType="BookInfoVO">
      INSERT INTO BOOK_INFO_TBL(book_key, book_reg_no, book_title, book_author, book_publisher)
      VALUES(#{book_key}, #{book_reg_no, jdbcType=VARCHAR}, 
      		#{book_title, jdbcType=VARCHAR}, #{book_author, jdbcType=VARCHAR}, 
                #{book_publisher, jdbcType=VARCHAR})
   </insert>
   <update id="update" parameterType="BookInfoVO">
      UPDATE   BOOK_INFO_TBL
      SET      book_key = #{book_key},
               book_reg_no = #{book_reg_no},
               book_title = #{book_title},
               book_author = #{book_author},
               book_publisher = #{book_publisher}
      WHERE    book_key = #{book_key}
   </update>
   <delete id="delete" parameterType="String">
      DELETE BOOK_INFO_TBL
      WHERE  book_key = #{book_key}
   </delete>
</mapper>

- 위에서 만든 VO와 DAO 파일을 연결하여 SQL 문을 만들었습니다.

- select, insert, update, delete 태그를 각각 이용하였고, id 값은 DAO에 선언한 것과 같은 값을 주었습니다.

- #{}는 입력한 값이 들어갈 곳입니다.

- SQL문과 관련해서는 Oracle 데이터베이스 문법을 참고 바랍니다.

 

 

6. 다음 글 참고

[SPRING BOOT] REST API 간단 예제 - (3) Service 만들기

[SPRING BOOT] REST API 간단 예제 - (4) Controller, Postman 출력

[SPRING BOOT] REST API 간단 예제 - (5) Swagger UI 설정

[SPRING BOOT] REST API 간단 예제 - (6) Swagger UI 꾸미기

 

 

 

이상으로 Database table 생성부터 VO, DAO, Mapper XML 파일까지 만들어보았습니다.


 

반응형