빅데이터 Java 개발자 교육 - 26일차 [미니프로젝트 - 1일차]

Jun_Gyu·2023년 3월 9일
0
post-thumbnail

💯미니 프로젝트 현황

금일부터 10일 금요일까지 짧은 기간동안 미니 프로젝트 제작을 진행할 예정이다.


📃 주제선정

우리가 이번에 선정하게 된 주제는 '유기동물 입양 서비스'이다.


처음에는 영화와 관련된 컨텐츠를 하려고 했었다. 하지만, 다른조의 아이디어와 비교하였을때 주제가 다소 겹치는 부분도 있었고 개성이 부족하다는 의견이 많아 조원들이 다같이 관심을 가지고 진행 할 수 있는 주제를 모색하였고,

다른조와 차별화를 둘 수 있으면서도 사회에 공헌을 할 수 있다는 점을 토대로 위와 같이 주제를 최종 선정하였다.

또한, 기존에 동물 보호소에 등록되어있는 동물들을 한눈에 확인할 수 있으며,
유기동물을 입양에 대해서 많은 사람들의 이목을 환기시킬 수 있도록 함과 동시에, 기존의 딱딱하고 어렵게만 느껴졌던 유기동물의 입양 과정과 절차에 대해서 인식을 개선하고자 하였다.

📈 프로젝트 정의서 (Feat.Notion)

본 프로젝트를 진행하는데 있어 모든 진행 상황을 한눈에 확인할 수 있도록 노션 사용하여 위와 같이 구성하였다.

그리고 우리조가 만드는 프로젝트에 요구되는 모든 항목들을 요구사항 정의서 항목에 모두 나열하여 정리했다.

도표에서는 구현하고자 하는 기능들에 항목들을 구성하여 어떤식으로 기능들이 사용될것인지에 대하여 좀 더 구체적으로 기술하였고, 조원들 개개인의 파트를 정하여 과제를 수행하는데 있어 효율적으로 작업을 진행하고자 역할을 세분화하였다.

위의 사진은 VS code를 이용하여 우리가 구현하고자 하는 프로그램의 테이블을 ERD로 구현한 모습이다.
이번 프로젝트에는 6명의 조에서 3명씩 나누어 파트를 나누어 실습을 진행하게 되었으며,

내가 속한 조에서는 동물 보호소, 유기동물, 그리고 유기동물의 정보를 담아 줄 입양 게시글까지 기능을 구현하기로 했다.



💪 내가 맡은 역할

이번 프로젝트에서는 "프론트엔드"의 역활인 UI구성,

프로젝트의 설계와 더불어 전반적인 흐름을 바로잡는 "프로젝트 매니저(PM)"의 역활인service 구성,

그리고 프론트에서 구성된 UI를 통해 데이터를 DB와 연동시킬 "백엔드"의 역활인 SQL문 구성까지 세가지의 역활로 세분화되었다.

나는 이번 프로젝트에서 백엔드 개발자로써의 역활을 수행하게 되었다.

SQL문을 이용하여 프로젝트의 기반이 될 테이블들과 뷰들을 제작함과 더불어, eclipse에서 Mybatis 라이브러리를 이용한 쿼리문들을 작성하여 Mapper들을 구성하기로 하였다.

금일에는 위와 같이 큰 틀을 잡고 Oracle에 내일 기능들에 대한 쿼리문들을 구성하였고, Mapper를 구성하는 작업은 내일부터 본격적으로 시작하기로 하였다.

아래는 내가 오늘 작업했던 쿼리문들이다.

-- 1-1. 보호소 회원가입(완)
INSERT INTO shelter (shelter_id, shelter_password, shelter_email, shelter_name, shelter_region, shelter_phone, shelter_date )
VALUES(#{obj.shelterId}, #{obj.shelterPw}, #{obj.shelterEmail}, #{obj.shelterName}, #{obj.shelterRegion} ,#{obj.shelterPhone}, CURRENT_DATE);

---------------------------------------------------------------------------------------

-- 1-2. 보호소 회원가입 아이디 중복확인 (조금이따가 하기)
--BEGIN
--SELECT shelter_id COUNT(shelter_id) FROM shelter GROUP BY shelter_id WHERE shelter_id =#{obj.shelterId};
--END;
/
COMMIT;

---------------------------------------------------------------------------------------

-- 1-3. 보호소 회원정보 수정 (Mapper : 이메일 제외, 기관명 주소 전화번호는 if문 추가해서 부분수정기능 구현하기(완)
 -- " <script> ",
UPDATE INTO shelter SET shelter_email = #{obj.shelterEmail}, 

-- " <if test = 'obj.shelterName != null'> ",
shelter_name = #{obj.shelterName},
-- " </if> ",
shlerter_region = #{obj.shelterRegion},
shelter_phone = #{obj.shelterPhone}
WHERE shelter_password =#{obj.shelterPw};
-- " </script> "

---------------------------------------------------------------------------------------

-- 1-4. 보호소 비밀번호 변경(완)
UPDATE shelter SET shelter_password =#{obj.newPW} where shelter_password =#{obj.shelterPw}

---------------------------------------------------------------------------------------

-- 1-5. 보호소 회원탈퇴(완)
UPDATE shelter 
SET 
shelter_name = 'null', shelter_region = 'null',  shelter_date = 'null',  
shelter_password = 'null', shelter_email = 'null', shelter_phone = 'null' 
WHERE shelter_id =#{obj.shelterId} AND shelter_pw =#{obj.shelterPw};

----------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------

-- 2-1. 보호소 로그인 기능
SELECT s.* FROM shelter s WHERE shelter_id =#{obj.shelterId}, shelter_password=#{obj.shelterPw};


----------------------------------------------------------------------------------------

-- 2-2. 보호소 아이디 찾기 (문자열 부분 가져오기) / 뒤에 ***처리는 eclipse에서 해도 될것같음..!
SELECT SUBSTR(s.shelter_id,1,3) FROM shelter s WHERE  shelter_email =#{obj.shelterEmail};

----------------------------------------------------------------------------------------

-- 2-3-1. 보호소 비밀번호 재설정 (비밀번호는 난수로 6자리 숫자 전송)
UPDATE shelter SET shelter_password = (SELECT 100000+ROUND(DBMS_RANDOM.VALUE () * 999999) AS RanNum FROM DUAL) WHERE shelter_id =#{obj.shelterId} AND shelter_email=#{obj.shelterEmail};
-- 2-3-2. 변경된 비밀번호 조회(이메일 전송용)
SELECT shelter_password FROM SHELTER WHERE shelter_id =#{} AND shelter_email=#{};

-- ex - 예시)
UPDATE shelter SET shelter_password = (SELECT 100000+ROUND(DBMS_RANDOM.VALUE () * 999999) AS RanNum FROM DUAL) WHERE shelter_id ='worldof700' AND shelter_email='worldof700@naver.com';
-- ex -비밀번호 보여주기)
select shelter_password From shelter Where shelter_id ='worldof700';

-- 2-3-3. 난수생성 쿼리문
SELECT 100000+ROUND(DBMS_RANDOM.VALUE () * 999999) AS RanNum FROM DUAL;


-- 2-4. 로그아웃 기능
------- 이 부분은 JFrame에서 구현하기 (화면만 전환되도록) -------

----------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------

-- 3-1. 보호동물 추가(완)
SELECT * FROM animal;


INSERT INTO animal (
animal_no, animal_species, animal_gender,
animal_age, animal_weight, animal_neutering,
animal_rescue_spot, animal_content, animal_state,
animal_limit, SHELTER_ID)
VALUES ( seq_animla_no.NEXTVAL, #{obj.animalSpecies}, #{obj.animalGender},
         #{obj.animalAge}, #{obj.animalWeight}, #{obj.animalNeutering},
         #{obj.animalRescueSpot}, #{obj.animalContent}, #{obj.animalState}, #{obj.animalLimit}, #{obj.shelterId});
----------------------------------------------------------------------------------------------------------------

INSERT INTO animal (
animal_no, animal_species, animal_gender,
animal_age, animal_weight, animal_neutering,
animal_rescue_spot, animal_content, animal_state,
animal_limit, SHELTER_ID)
VALUES ( seq_animal_no.NEXTVAL, '[고양이]코리안 숏헤어', '수컷',
         '2살로 추정', '2.8kg', '아니오',
         '부산시 동래구 동래역 1번출구', '순함, 발견당시 가벼운 외상있었으나 호전됨.', 1, '23/03/24', 'sumer1223' );

---------------------------------------------------------------------------------------
-- 3-2. 보호동물 정보 수정(완)

UPDATE animal SET animal_species =#{obj.animalSpecies}, animal_gender =#{obj.animalGender}, animal_age =#{obj.animalAge}, 
                  animal_weight =#{obj.animalWeight}, animal_neutering =#{obj.animalNeutering}, animal_state =#{obj.animalState}, 
                  animal_content =#{obj.animalContent} 
    WHERE animal_no = #{obj.animalNo};

----------------------------------------------------------------------------------------------------------------


UPDATE animal SET animal_species ='[개]요크셔테리어', animal_gender ='암컷', animal_age ='6살로 추정', 
                  animal_weight ='6.2kg', animal_neutering ='예', animal_state =1, 
                  animal_content ='경계심이 있음' 
    WHERE animal_no = 1;
---------------------------------------------------------------------------------------
-- 테이블뷰를 만들어 조회를 해야할 것 같음. (게시글 유무도 기능 추가해야 함.)

CREATE OR REPLACE VIEW 
-- 3-3-1. 보호동물 조회(전체)
SELECT * FROM animal;

-- 3-3-2. 보호동물 조회(항목별, 부분만 검색해도 나오게끔)
SELECT m.* FROM MEMBERTB m WHERE ${obj.column},
		 LIKE '%'|| #{map.txt} || '%';
----------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------

-- 4-1. 입양게시글 추가
INSERT INTO adpbrd(
brd_no, brd_title, brd_content,
)
VALUES(seq_adpbrd_co.NEXTVAL, #{obj.brdTitle}, #{obj.brdContent} 
);


-- 4-2. 입양게시글 삭제
DELETE FROM adpbrd WHERE #{obj.brdNo};

----------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------

-- 5-1. 입양 요청 게시글 확인(완)
SELECT * FROM ASKADP;

---------------------------------------------------

-- 5-2. 입양 요청 게시글 삭제 (완)
DELETE FROM ASKADP WHERE BRD_NO =#{brdNo}; -- (버튼을 누르면 해당 게시글의 번호가 자동으로 들어가도록 mapper를 구성해야 할것같음.)

현재로써는 큰 틀만 잡아둔 상태이며, 이후 설계를 통해 추가적으로 기능이 필요한 부분이라고 판단이 될 시 조원들과 상의하여 기능을 추가하기로 하였다.

profile
시작은 미약하지만, 그 끝은 창대하리라

0개의 댓글