Skip to content

jinyngg/baseball-management

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

0️⃣ 프로젝트

image

image

1️⃣ 요구사항

  1. 모든 결과는 Console에 출력
입력 : 야구장목록
출력 : [Stadium(stadiumId=1, name=서울경기장, createdAt=2023-06-26 20:55:49.0), Stadium(stadiumId=2, name=울산경기장, createdAt=2023-06-26 20:55:49.0), Stadium(stadiumId=3, name=대구경기장, createdAt=2023-06-26 20:55:49.0)]
  1. DB 연결 Connection을 생성하는 클래스인 DBConnection 생성
public class DBConnection {
    public static Connection getInstance() {
        // MySQL 연결 정보
        String url = "jdbc:mysql://localhost:3306/baseball";
        String username = username;
        String password = password;

        // JDBC 드라이버 로드
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection connection = DriverManager.getConnection(url, username, password);
            System.out.println("debug : DB has been connected");
            return connection;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}
  1. 모델은 테이블과 다르게 camel 표기법으로 변수 네이밍

image

2️⃣ DB

create.sql

-- STADIUM 생성문
create table stadium(
                        stadium_id int primary key auto_increment,
                        name varchar(20) not null,
                        created_at TIMESTAMP not null
);

-- TEAM 생성문
CREATE TABLE team (
                      team_id INT AUTO_INCREMENT PRIMARY KEY,
                      stadium_id INT,
                      name VARCHAR(100),
                      created_at TIMESTAMP,
                      FOREIGN KEY (stadium_id) REFERENCES stadium(stadium_id)
);

-- PLAYER 생성문
CREATE TABLE player (
                      player_id INT AUTO_INCREMENT PRIMARY KEY,
                      team_id INT,
                      name VARCHAR(20),
                      position VARCHAR(20),
                      created_at TIMESTAMP,
                      FOREIGN KEY (team_id) REFERENCES team(team_id),
                      UNIQUE KEY unique_team_position (team_id, position)
);

-- OUT_PLAYER 생성문
CREATE TABLE out_player (
                            out_player_id INT AUTO_INCREMENT PRIMARY KEY,
                            player_id INT,
                            reason VARCHAR(20),
                            created_at TIMESTAMP,
                            FOREIGN KEY (player_id) REFERENCES player(player_id)
);

다이어그램

image

3️⃣ 구현 기능

코어 작성 손영준

image

image

야구장 등록 손영준

요청 : 야구장등록?name=잠실야구장
응답 : 성공이라는 메시지를 출력한다.

image

전체 야구장 목록보기 손영준

요청 : 야구장목록
응답 : 야구장 목록은 Model -> Stadium을 List에 담아서 출력한다.

image

팀 등록 장진영

요청 : 팀등록?stadiumId=1&name=NC
응답 : 성공이라는 메시지를 출력한다.

image

전체 팀 목록 장진영

요청 : 팀목록
응답 : 팀 목록은 Stadium 정보를 조인해서 출력해야 된다. TeamRespDTO가 필요하다.

image

선수 등록 장진영

요청 : 선수등록?teamId=1&name=이대호&position=1루수
응답 : 성공이라는 메시지를 출력한다.

포지션은 아래와 같이 중복되지 않고 입력되어야 합니다.(같은 포지션에 두 명의 선수가 등록될 수 없습니다.)
player 테이블에 포지션 칼럼은 팀 별로 유일해야 합니다.(player 테이블의 team_id와 position은 다중 칼럼 유니크 제약조건이 필요)

image

팀별 선수 목록 장진영

요청 : 선수목록?teamId=1
응답 : 선수 목록은 Model -> Player를 List에 담아서 출력한다. (team_id는 출력하지 않아도 된다)

image

선수 퇴출 등록 손영준

요청 : 퇴출등록?playerId=1&reason=도박
응답 : 성공이라는 메시지를 출력합니다.

두 개 이상의 write 문이 실행되어야 합니다.(트랜잭션 관리가 Service에서 필요)
out_player에 퇴출 선수를 insert하고, player 테이블에서 해당 선수의 team_id를 null로 변경합니다.

선수 퇴출 목록 손영준

요청 : 퇴출목록
응답 : OutPlayerRespDTO에 담아서 출력합니다.

image

호출 전

image

호출 후

image

포지션별 팀 야구 선수 페이지 장진영

요청 : 포지션별목록
응답 : PositionRespDto 에 값을 담아서 콘솔에 출력합니다.

image

4️⃣ 응답형식

Response =
{message = '포지션별 팀 야구 선수 조회에 성공했습니다.',
data = {3루수={SSG=장진영}, 2루수={SSG=이대호, LG=김원호}, 외야수={1=이대호}, 1루수={JYTEAM=장진영, LG=이대호}}
}

About

야구 관리 프로그램(FC_BE_5 토이프로젝트)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages