스터디-코드정의서(shcduleWirte)

뚱이아저씨·2024년 2월 28일
0

스터디

목록 보기
2/2
post-thumbnail

내가 작성한 코드 확실히 이해하기

이번에 집중적으로 공부를 한 부분은 반환 타입에 대해서 이다.
나는 사실 Dao에서 어떤 반환타입을 사용해야 하는지 정확하게
모르고 넘어갔다.. 하지만 이번에 공부하면서 제대로 이해한거
같아 이렇게 글로 남긴다.

저번에도 말했지만 간단하게 한번더 정리하겠다.

SchduleDto

@Data
public class ScheduleDto{

    private int scheduleSequence;        //시퀀스
    private String scheduleId;      //사용자 아이디
    private Timestamp scheduleSday;      //등록 날짜
    private Timestamp scheduleEday;      //종료 날짜
    private String scheduleTitle;   //스케줄 제목
    private String scheduleContent; //스케줄 내용
    }

내가 혼자 공부하려고 하는 프로젝트 이니
간단하게 진짜 딱 들어가야하는 DB의 컬럼만 넣어봤다.

ScheduleDao

 public int getScheduleWrite (ScheduleDto scheduledto);

schdeuleWrite에 대한 반환타입을 int로 설정한 이유 :
1. DB에서 insert를 할 때 0또는 1이 떨어지기 때문에 숫자 타입인 int를 사용하였다.
2. DB의 기본키(PK)를 숫자 형태로 설정 했기 때문이다.
일단 나는 시퀀스로 PK를 설정 했기 때문에 반환타입 int를 사용했다.
3. 추후 다른 데이터와 연결하기 위한 식별자로 사용하기 위함이다.
추후 댓글 기능 같은 걸 추가로 넣어볼 생각이기 때문에 반환타입을 int로 설정 했다.

그리고 매개변수를 ScheduleDto로 설정한 이유는
ScheduleDto에 있는 DB 전체를 insert 받기 위함이다.

ScheduleService

public int scheduleWriteService(ScheduleDto scheduleDto) {
        return scheduledao.getScheduleWrite(scheduleDto);
    }

scheduleDao에 있는 getScheduleWrite에
scheduleDto를 담아서 return을 시켜준다.
dao로 sevice와 DB(Dto)를 연결 시켜주면
mapper에 있는 쿼리가 실행되어 내가 입력한 값을 넣어주게 된다.

ScheduleController

	@ResponseBody
    @RequestMapping("/scheduleWrite")
    public Map<String, Object> scheduleWrite(@RequestBody ScheduleDto scheduleDto) {
        Map<String, Object> resultMap = new HashMap<>();
        try {
            scheduleService.scheduleWriteService(scheduleDto);
            resultMap.put("success", true);
        } catch (Exception e) {
            resultMap.put("success", false);
            resultMap.put("message", "게시물 등록에 실패했습니다.");
            log.info("게시물 등록에 실패했습니다.", e);
        }
        return resultMap;
    }

비동기(Ajax)로 데이터를 넘기기때문에 @ResponseBody를 사용
반환 타입을 Map<String, Object>로 설정 하여 key/value 요청하기 위해 이다.

shceduleWrite.js

function scheduleWriteEvent() {
    // 모달에 입력된 데이터 수집
    var scheduleId = $('#scheduleId').val();
    var scheduleSday = new Date($('#scheduleSday').val());
    var scheduleEday = new Date($('#scheduleEday').val());
    var scheduleTitle = $('#scheduleTitle').val();
    var scheduleContent = $('#scheduleContent').val();

    // 수집한 데이터를 객체로 만들기
    var scheduleData = {
        scheduleId: scheduleId,
        scheduleSday: scheduleSday,
        scheduleEday: scheduleEday,
        scheduleTitle: scheduleTitle,
        scheduleContent: scheduleContent
    };

    $.ajax({
        url: '/schedule/scheduleWrite',
        type: 'POST',
        contentType: 'application/json',
        data: JSON.stringify(scheduleData),
        success: function(response) {
            console.log(response);
            // 등록 성공 시
            if (response.success) {
                alert('스케줄이 성공적으로 등록되었습니다.');
                $('#modalTest').hide(); // 모달 닫기
                getScheduleListreturn();
                setTimeout(() => getScheduleEvent(returnList), 1000);

            } else {
                alert('스케줄 등록에 실패했습니다.');
            }
        },
        error: function(xhr, status, error) {
            console.error('서버 오류:', error);
            alert('서버 오류로 인해 스케줄을 등록할 수 없습니다.');
        }
    });
}

입력해야 할 변수를 생성 하고 그 변수에 각각 해당하는 ID의 value의 값을 넣는다.
scheduleData 이 변수안에 각 DB에이 있는 key와 value의 값을 할당 한다.
그 후 ajax로 controller에서 매핑한 url을 설정하고 post타입으로 설정한다.
JSON.stringify(scheduleData)를 사용해서 json 형태로 변환 후
분기 처리를 한다. 스케줄이 성공적으로 등록이 되면 모달 창을 닫는다.
getScheduleListreturn() 함수는 Ajax 요청을 사용하여 일정 목록을
가져오는 비동기 함수 이다. 이함수가 완료되고 일정 목록이 반환 되면
returnList의 변수에 할당이 된다.

profile
뚱이아빠의 개발자도전기

0개의 댓글