박민혁 박민혁 07-26
240726 구자현 교재 CRUD
@2b0756fd052929fb1901f717c61d984b71703b0f
src/main/java/com/takensoft/ai_lms/common/confing/SecurityConfig.java
--- src/main/java/com/takensoft/ai_lms/common/confing/SecurityConfig.java
+++ src/main/java/com/takensoft/ai_lms/common/confing/SecurityConfig.java
@@ -64,6 +64,7 @@
                 .requestMatchers("/test/**").permitAll()
                 .requestMatchers("/studentInfo/**").permitAll() // 학생 정보 진입 허용(민수)
                 .requestMatchers("/board/**").permitAll() // 게시판 정보 진입 허용
+                .requestMatchers("/book/**").permitAll() // 교재 정보 진입 허용
                 .anyRequest().authenticated()); // 나머지 경로는 인증 필요
 
         // jwt 필터 처리 적용
 
src/main/java/com/takensoft/ai_lms/lms/book/dao/BookDAO.java (added)
+++ src/main/java/com/takensoft/ai_lms/lms/book/dao/BookDAO.java
@@ -0,0 +1,56 @@
+package com.takensoft.ai_lms.lms.book.dao;
+
+import com.takensoft.ai_lms.lms.book.vo.BookVO;
+import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
+
+import java.util.List;
+
+/**
+ * @author  : 구자현
+ * @since   : 2024.07.25
+ *
+ * 교재 관련 Mapper
+ */
+@Mapper("bookDAO")
+public interface BookDAO {
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 전체 교재 목록 출력
+     */
+    List<BookVO> getAllBooks();
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 책의 상세 정보
+     */
+    BookVO getBookById(String book_id);
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 교재 등록
+     */
+    void insertBook(BookVO book);
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 교재 제목 수정
+     */
+    void updateBook(BookVO book);
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 교재 삭제
+     */
+    void deleteBook(String book_id);
+}
 
src/main/java/com/takensoft/ai_lms/lms/book/service/BookService.java (added)
+++ src/main/java/com/takensoft/ai_lms/lms/book/service/BookService.java
@@ -0,0 +1,53 @@
+package com.takensoft.ai_lms.lms.book.service;
+
+import com.takensoft.ai_lms.lms.book.vo.BookVO;
+import java.util.List;
+
+/**
+ * @author  : 구자현
+ * @since   : 2024.07.25
+ *
+ * 교재 관련 Service 클래스
+ */
+public interface BookService {
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 전체 교재 목록 출력
+     */
+    List<BookVO> getAllBooks();
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 책의 상세 정보
+     */
+    BookVO getBookById(String book_id);
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 교재 등록
+     */
+    void insertBook(BookVO book);
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 교재 제목 수정
+     */
+    void updateBook(BookVO book);
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 교재 삭제
+     */
+    void deleteBook(String book_id);
+}
 
src/main/java/com/takensoft/ai_lms/lms/book/service/Impl/BookServiceImpl.java (added)
+++ src/main/java/com/takensoft/ai_lms/lms/book/service/Impl/BookServiceImpl.java
@@ -0,0 +1,82 @@
+package com.takensoft.ai_lms.lms.book.service.Impl;
+
+import com.takensoft.ai_lms.common.idgen.service.IdgenService;
+import com.takensoft.ai_lms.lms.book.dao.BookDAO;
+import com.takensoft.ai_lms.lms.book.service.BookService;
+import com.takensoft.ai_lms.lms.book.vo.BookVO;
+import lombok.RequiredArgsConstructor;
+import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
+import org.springframework.stereotype.Service;
+import java.util.List;
+
+/**
+ * @author  : 구자현
+ * @since   : 2024.07.25
+ *
+ * 교재 관련 ServiceImpl 클래스
+ */
+@Service
+@RequiredArgsConstructor
+public class BookServiceImpl extends EgovAbstractServiceImpl implements BookService {
+
+    private final BookDAO bookDAO;
+
+    private final IdgenService bookIdgn;
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 전체 교재 목록 출력
+     */
+    @Override
+    public List<BookVO> getAllBooks() {
+        return bookDAO.getAllBooks();
+    }
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 책의 상세 정보
+     */
+    @Override
+    public BookVO getBookById(String book_id) {
+        return bookDAO.getBookById(book_id);
+    }
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 교재 등록
+     */
+    @Override
+    public void insertBook(BookVO book) {
+        String book_id = bookIdgn.getNextStringId();
+        book.setBook_id(book_id);
+        bookDAO.insertBook(book);
+    }
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 교재 제목 수정
+     */
+    @Override
+    public void updateBook(BookVO book) {
+        bookDAO.updateBook(book);
+    }
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 교재 삭제
+     */
+    @Override
+    public void deleteBook(String book_id) {
+        bookDAO.deleteBook(book_id);
+    }
+}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/ai_lms/lms/book/vo/BookVO.java (added)
+++ src/main/java/com/takensoft/ai_lms/lms/book/vo/BookVO.java
@@ -0,0 +1,23 @@
+package com.takensoft.ai_lms.lms.book.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ * @author  : 구자현
+ * @since   : 2024.07.25
+ *
+ * 교재 관련 VO
+ */
+@Setter
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+public class BookVO {
+    // 교재 아이디
+    private String book_id;
+    // 교재 제목
+    private String book_nm;
+}
 
src/main/java/com/takensoft/ai_lms/lms/book/web/BookController.java (added)
+++ src/main/java/com/takensoft/ai_lms/lms/book/web/BookController.java
@@ -0,0 +1,77 @@
+package com.takensoft.ai_lms.lms.book.web;
+
+import com.takensoft.ai_lms.lms.book.service.Impl.BookServiceImpl;
+import com.takensoft.ai_lms.lms.book.vo.BookVO;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * @author  : 구자현
+ * @since   : 2024.07.25
+ *
+ * 교재 관련 Controller 클래스
+ */
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/book")
+public class BookController {
+
+    private final BookServiceImpl bookServiceImpl;
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 전체 교재 목록 출력
+     */
+    @GetMapping
+    public List<BookVO> getAllBooks() {
+        return bookServiceImpl.getAllBooks();
+    }
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 책의 상세 정보
+     */
+    @GetMapping("/{book_id}")
+    public BookVO getBookById(@PathVariable String book_id) {
+        return bookServiceImpl.getBookById(book_id);
+    }
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 교재 등록
+     */
+    @PostMapping
+    public void insertBook(@RequestBody BookVO book) {
+        bookServiceImpl.insertBook(book);
+    }
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 교재 제목 수정
+     */
+    @PutMapping
+    public void updateBook(@RequestBody BookVO book) {
+        bookServiceImpl.updateBook(book);
+    }
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 교재 삭제
+     */
+    @DeleteMapping("/{book_id}")
+    public void deleteBook(@PathVariable String book_id) {
+        bookServiceImpl.deleteBook(book_id);
+    }
+}(파일 끝에 줄바꿈 문자 없음)
 
src/main/resources/mybatis/mapper/lms/book-SQL.xml (added)
+++ src/main/resources/mybatis/mapper/lms/book-SQL.xml
@@ -0,0 +1,65 @@
+<?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.takensoft.ai_lms.lms.book.dao.BookDAO">
+
+    <resultMap id="bookMap" type="BookVO">
+        <result property="book_id" column="book_id"/>
+        <result property="book_nm" column="book_nm"/>
+    </resultMap>
+
+    <!--
+        작 성 자 : 구자현
+        작 성 일 : 2024.07.25
+        내   용 : 전체 교재 목록 출력
+    -->
+    <select id="getAllBooks" resultMap="bookMap">
+        SELECT
+            book_id,
+            book_nm
+         FROM book
+    </select>
+
+    <!--
+        작 성 자 : 구자현
+        작 성 일 : 2024.07.25
+        내   용 : 책의 상세 정보
+    -->
+    <select id="getBookById" parameterType="String" resultMap="bookMap">
+        SELECT
+            book_id,
+            book_nm
+         FROM book
+        WHERE book_id = #{book_id}
+    </select>
+
+    <!--
+        작 성 자 : 구자현
+        작 성 일 : 2024.07.25
+        내   용 : 교재 등록
+    -->
+    <insert id="insertBook" parameterType="bookVO">
+        INSERT INTO book (book_id, book_nm)
+             VALUES (#{book_id}, #{book_nm})
+    </insert>
+
+    <!--
+        작 성 자 : 구자현
+        작 성 일 : 2024.07.25
+        내   용 : 교재 제목 수정
+    -->
+    <update id="updateBook" parameterType="bookVO">
+        UPDATE book
+           SET book_nm = #{book_nm}
+         WHERE book_id = #{book_id}
+    </update>
+
+    <!--
+        작 성 자 : 구자현
+        작 성 일 : 2024.07.25
+        내   용 : 교재 삭제
+    -->
+    <delete id="deleteBook" parameterType="String">
+        DELETE FROM book
+         WHERE book_id = #{book_id}
+    </delete>
+</mapper>(파일 끝에 줄바꿈 문자 없음)
 
src/main/resources/mybatis/mapper/lms/change.xml (deleted)
--- src/main/resources/mybatis/mapper/lms/change.xml
@@ -1,14 +0,0 @@
-<?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.takensoft.ai_lms.lms.test.dao.TestDAO">
-    <!--
-        작 성 자 : 박민혁
-        작 성 일 : 2024.07.25
-        내   용 : 경로 생성을 위해 만들어 놓은 xml,
-        CRUD를 이용하는데 삭제하거나 수정해서 사용해주세요
-    -->
-    <select id="testList" resultType="HashMap">
-        SELECT test_data
-        FROM test_info
-    </select>
-</mapper>(파일 끝에 줄바꿈 문자 없음)
Add a comment
List