[일정관리]일정 생성 및 조회

2025. 3. 25. 18:19·프로젝트/프로젝트 회고

개발 에디터는 intelliJ 를 이용하였고 Spring 프레임워크를 이용하였다.

 

우선 디렉토리 및 파일 분리는 다음과 같이 하였다.

 

 

✅ 일정 생성

  • 할일 , 작성자명 , 비밀번호 , 작성/수정일 저장(날짜 & 시간)
  • 일정의 고유 식별자(ID)  자동 생성
  • 최초 입력시 작성일과 수정일 동일한 데이터 적용
💡 주요 코드만 작성 

♐ TodoController

더보기
/**
 * 새로운 Todo 항목을 생성하는 API.
 *
 * @param dto Todo 요청 데이터
 * @return {@link ResponseEntity<TodoResponseDto>} 생성된 Todo의 응답 데이터와 함께 201 Created 상태 코드
 */
@PostMapping
public ResponseEntity<TodoResponseDto> createTodo(@RequestBody TodoRequestDto dto) {
    return new ResponseEntity<>(todoService.saveTodo(dto), HttpStatus.CREATED);
}

 

♐ TodoServiceImpl

더보기
/**
 * Todo 항목을 저장합니다.
 *
 * @param requestDto Todo 요청 데이터
 * @return {@link TodoResponseDto} 생성된 Todo의 응답 데이터
 */
@Override
public TodoResponseDto saveTodo(TodoRequestDto requestDto) {
    Date currentDate = new Date();
    Date editDate = new Date();
    Todo todo = new Todo(requestDto.getTodo(), requestDto.getName(), requestDto.getPassword(), currentDate, editDate);
    return todoRepository.saveTodo(todo);
}

 

♐ TodoRepositoryImpl

더보기
/**
 * Todo 항목을 저장합니다.
 *
 * @param todo 저장할 Todo 객체
 * @return 저장된 Todo의 응답 데이터
 */
@Override
public TodoResponseDto saveTodo(Todo todo) {
    SimpleJdbcInsert jdbcInsert = new SimpleJdbcInsert(jdbcTemplate);
    jdbcInsert.withTableName("todo").usingGeneratedKeyColumns("id");

    Map<String, Object> parameters = new HashMap<>();
    parameters.put("todo", todo.getTodo());
    parameters.put("name", todo.getName());
    parameters.put("password", todo.getPassword());
    parameters.put("uploadDate", todo.getUploadDate());
    parameters.put("editDate", todo.getEditDate());

    Number key = jdbcInsert.executeAndReturnKey(new MapSqlParameterSource(parameters));
    return new TodoResponseDto(key.longValue(), todo.getTodo(), todo.getName(), todo.getUploadDate(), todo.getEditDate());
}

 

♐ todo 테이블

더보기
-- auto-generated definition
create table todo
(
    id         bigint auto_increment comment 'userid'
        primary key,
    todo       text         not null comment '할일',
    name       varchar(100) not null comment '작성자명',
    password   varchar(10)  not null comment '비밀번호',
    uploadDate datetime     not null comment '작성일',
    editDate   datetime     null comment '수정일'
);

 

✅ 조건일정 조회

  • 수정일과 작성자명을 기준으로 조회 (수정일 내림차순)
  • 위의 조건중 하나만 충족하거나 둘다 충족하지 않을 수도,두가지 모두 충족 가능
💡 주요 코드만 작성 

 

♐ TodoController

더보기
/**
 * 조건에 맞는 Todo 항목들을 조회하는 API.
 *
 * @param editDate 수정일 (선택 사항)
 * @param name Todo 항목의 이름 (선택 사항)
 * @return {@link ResponseEntity<List<TodoResponseDto>>} 조건에 맞는 Todo 목록과 함께 200 OK 상태 코드
 */
@GetMapping
public ResponseEntity<List<TodoResponseDto>> findConditionTodo(
        @RequestParam(required = false) Date editDate,
        @RequestParam(required = false) String name) {
    return new ResponseEntity<>(todoService.findConditionTodo(editDate, name), HttpStatus.OK);
}

 

 

♐ TodoServiceImpl

더보기
/**
 * 조건에 맞는 Todo 항목들을 조회합니다.
 *
 * @param editDate 수정일 (선택 사항)
 * @param name Todo 항목의 이름 (선택 사항)
 * @return {@link List<TodoResponseDto>} 조건에 맞는 Todo 목록
 */
@Override
public List<TodoResponseDto> findConditionTodo(Date editDate, String name) {
    return todoRepository.findConditionTodo(editDate, name);
}

 

♐ TodoRepositoryImpl

더보기
/**
     * 조건에 맞는 Todo 항목들을 조회합니다.
     *
     * @param date 수정일 (선택 사항)
     * @param name 작성자 이름 (선택 사항)
     * @return 조건에 맞는 Todo 목록
     */
    @Override
    public List<TodoResponseDto> findConditionTodo(Date date, String name) {
        List<Todo> result = jdbcTemplate.query("SELECT * FROM todo WHERE editDate = ? OR name = ? ORDER BY editDate DESC",
                todoRowMapper(), date, name);

        return result.stream()
                .map(todo -> new TodoResponseDto(
                        todo.getId(),
                        todo.getTodo(),
                        todo.getName(),
                        todo.getUploadDate(),
                        todo.getEditDate()
                ))
                .collect(Collectors.toList());
    }

 

 

✅ 선택 일정 조회

  • 선택한 일정 단건의 정보를 조회
  • 일정의 고유 식별자(ID) 를 이용하여 조회
💡 주요 코드만 작성 

♐ TodoController

더보기
/**
 * ID로 Todo 항목을 조회하는 API.
 *
 * @param id 식별자
 * @return {@link ResponseEntity<TodoResponseDto>} 조회된 Todo의 응답 데이터와 함께 200 OK 상태 코드
 * @exception ResponseStatusException 해당 ID의 Todo가 존재하지 않을 경우 404 Not Found
 */
@GetMapping("/{id}")
public ResponseEntity<TodoResponseDto> findTodoId(@PathVariable Long id) {
    return new ResponseEntity<>(todoService.findTodoId(id), HttpStatus.OK);
}

 

♐ TodoServiceImpl

더보기
/**
 * ID로 Todo 항목을 조회합니다.
 *
 * @param id 조회할 Todo의 식별자
 * @return {@link TodoResponseDto} 조회된 Todo의 응답 데이터
 */
@Override
public TodoResponseDto findTodoId(Long id) {
    Todo todo = todoRepository.findTodoById(id);
    return new TodoResponseDto(todo);
}

 

♐ TodoRepositoryImpl

더보기
/**
 * ID로 Todo 항목을 조회합니다.
 *
 * @param id 조회할 Todo의 식별자
 * @return 해당 ID의 Todo 객체
 * @exception ResponseStatusException 해당 ID의 Todo가 존재하지 않을 경우 404 Not Found
 */
@Override
public Todo findTodoById(Long id) {
    List<Todo> result = jdbcTemplate.query("select * from todo where id =?", todoRowMapper(), id);
    return result.stream().findAny().orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "해당 id 가 없습니다" + id));
}

 

 

다음 글엔 todo 수정 및 삭제 기능에 대해 다룰 것이다.

'프로젝트 > 프로젝트 회고' 카테고리의 다른 글

[팀 프로젝트-JPA 활용 게시판] S.A 작성  (0) 2025.04.09
[일정관리]일정 수정 및 삭제  (0) 2025.03.26
[일정관리]API 명세 및 ERD작성  (0) 2025.03.24
[자기소개4]프로젝트 마무리  (0) 2025.02.24
[자기소개3]Firebase 에서 방명록 데이터 불러오기  (1) 2025.02.20
'프로젝트/프로젝트 회고' 카테고리의 다른 글
  • [팀 프로젝트-JPA 활용 게시판] S.A 작성
  • [일정관리]일정 수정 및 삭제
  • [일정관리]API 명세 및 ERD작성
  • [자기소개4]프로젝트 마무리
코딩로봇
코딩로봇
금융 IT 개발자
  • 코딩로봇
    쟈니의 일지
    코딩로봇
  • 전체
    오늘
    어제
    • 분류 전체보기 (131) N
      • JavaScript (8)
      • SQL (10) N
      • 코딩테스트 (29)
        • Java (15)
        • SQL (12)
      • Java (10)
      • 프로젝트 (20)
        • 트러블슈팅 (6)
        • 프로젝트 회고 (12)
      • git,Github (2)
      • TIL (34) N
      • Spring (16) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    java #arraylist #list #배열
    스파르타 코딩 #부트캠프 #첫ot
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩로봇
[일정관리]일정 생성 및 조회
상단으로

티스토리툴바