Spring Boot와 MyBatis를 활용한 RESTful 게시판 API 서버입니다. 게시글 CRUD, 댓글 기능, 페이징 및 검색 기능을 제공합니다.
- Java 17
- Spring Boot 3.4.9
- MyBatis 3.0.5
- Lombok
- Oracle Database
- JDBC Driver:
ojdbc6 11.2.0.4
- JDBC Driver:
- Maven
- ✅ 게시글 등록 (Create)
- ✅ 게시글 조회 (Read)
- 전체 목록 조회
- 단건 조회
- 페이징 처리된 목록 조회
- 검색 기능 (제목/내용/작성자)
- ✅ 게시글 수정 (Update)
- ✅ 게시글 삭제 (Delete)
- ✅ 댓글 등록
- ✅ 댓글 조회 (게시글별)
- ✅ 댓글 수정
- ✅ 댓글 삭제
- 검색 타입: 제목(T), 내용(C), 작성자(W) 및 복합 검색 지원
- 페이징: 페이지 번호와 페이지당 항목 수 설정 가능
- 동적 쿼리: MyBatis Dynamic SQL을 활용한 유연한 검색
board_aica/
├── src/
│ ├── main/
│ │ ├── java/com/example/board/
│ │ │ ├── controller/ # REST API 컨트롤러
│ │ │ │ ├── BoardController.java
│ │ │ │ └── ReplyController.java
│ │ │ ├── service/ # 비즈니스 로직
│ │ │ │ ├── BoardService.java
│ │ │ │ ├── BoardServiceImpl.java
│ │ │ │ ├── ReplyService.java
│ │ │ │ └── ReplyServiceImpl.java
│ │ │ ├── mapper/ # MyBatis 매퍼 인터페이스
│ │ │ │ ├── BoardMapper.java
│ │ │ │ └── ReplyMapper.java
│ │ │ ├── domain/ # 도메인 모델 (VO)
│ │ │ │ ├── BoardVO.java
│ │ │ │ ├── ReplyVO.java
│ │ │ │ └── Criteria.java # 페이징/검색 조건
│ │ │ └── BoardApplication.java
│ │ └── resources/
│ │ ├── mapper/ # MyBatis XML 매퍼
│ │ │ ├── BoardMapper.xml
│ │ │ └── ReplyMapper.xml
│ │ └── application.yml # 애플리케이션 설정
│ └── test/ # 테스트 코드
├── pom.xml # Maven 설정 파일
└── README.md
- BoardVO: 게시글 엔티티 (번호, 제목, 내용, 작성자, 등록일, 수정일)
- ReplyVO: 댓글 엔티티 (댓글번호, 게시글번호, 댓글내용, 작성자, 등록일, 수정일)
- Criteria: 페이징 및 검색 조건 (페이지번호, 페이지크기, 검색타입, 키워드)
- MyBatis를 통한 SQL 매핑
- XML 기반 쿼리 정의
- 동적 SQL을 활용한 검색 기능 구현
spring: datasource: driver-class-name: oracle.jdbc.driver.OracleDriver url: jdbc:oracle:thin:@localhost:1521:XE username: agent2 password: 1234
CREATE TABLE tbl_board ( bno NUMBER PRIMARY KEY, -- 게시글 번호 title VARCHAR2(200) NOT NULL, -- 제목 content VARCHAR2(2000), -- 내용 writer VARCHAR2(50) NOT NULL, -- 작성자 regdate DATE DEFAULT SYSDATE, -- 등록일 updatedate DATE DEFAULT SYSDATE -- 수정일 ); CREATE SEQUENCE seq_board;
CREATE TABLE tbl_reply ( rno NUMBER PRIMARY KEY, -- 댓글 번호 bno NUMBER NOT NULL, -- 게시글 번호 (FK) reply VARCHAR2(1000) NOT NULL, -- 댓글 내용 replyer VARCHAR2(50) NOT NULL, -- 댓글 작성자 replydate DATE DEFAULT SYSDATE, -- 등록일 updatedate DATE DEFAULT SYSDATE, -- 수정일 FOREIGN KEY (bno) REFERENCES tbl_board(bno) ); CREATE SEQUENCE seq_reply;
- Java 17 이상
- Maven 3.6 이상
- Oracle Database (또는 MySQL)
git clone <repository-url> cd board_aica
- Oracle Database 설치 및 실행
- 위의 테이블 및 시퀀스 생성 스크립트 실행
src/main/resources/application.yml에서 데이터베이스 연결 정보 수정
# Windows mvnw.cmd spring-boot:run # Linux/Mac ./mvnw spring-boot:run
# 빌드 mvnw.cmd clean package # 실행 java -jar target/board-0.0.1-SNAPSHOT.jar
- 서버 포트:
8084 - Base URL:
http://localhost:8084
GET /board/list- 전체 게시글 목록 조회GET /board/list/{pageNum}/{type}/{keyword}- 페이징 + 검색 목록 조회GET /board/get/{bno}- 게시글 상세 조회POST /board/register- 게시글 등록PUT /board/modify/{bno}- 게시글 수정DELETE /board/remove/{bno}- 게시글 삭제
GET /replies/list/{bno}- 댓글 목록 조회 (게시글별)GET /replies/get/{rno}- 댓글 상세 조회POST /replies/new/{bno}- 댓글 등록PUT /replies/modify/{rno}- 댓글 수정DELETE /replies/delete/{rno}- 댓글 삭제
이 프로젝트는 학습 목적의 데모 프로젝트입니다.