개발 에디터는 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 |