Search
Duplicate
🗒️

Todolist 기본 기능 개발

유형
작업
Date
2023/02/07
Select
프로젝트
세미 프로젝트

1. 작업 사항

[1] boilerplate 구조 구현

기본 틀 생성(Controller, DTO, Repository, Service)

[2] DTO 작성

롬복 사용
@Data public class TodoList { private Integer todoIdx; private String userId; private String todo; private Boolean isClear; }
Java
복사

[3] Todolist Insert 기능 구현

Repository에 다음과 같은 Insert쿼리문 작성
@Insert("insert into todo(user_id, todo) values(#{userId}, #{todo})") @Options(useGeneratedKeys = true, keyProperty = "todoIdx") void insertTodo(TodoList todolist);
Java
복사
ServiceImpl
@Override public void insertTodo(TodoList todolist) { todoRepository.insertTodo(todolist); }
Java
복사
Controller에서 PostMapping으로 사용자ID와 함께 추가한 todo정보를 올려주고 현재 주소로 redirect
@PostMapping("addTodo") public String addTodo(TodoList todoList, @SessionAttribute Member auth){ //System.out.println(todo); todoList.setUserId(auth.getUserId()); todoService.insertTodo(todoList); return "redirect:/todo/todo-list"; }
Java
복사

[4] Todolist Select 기능 구현

Repository에 is_clear 플래그가 0이고 현재 user의 todolist를 받도록 Select 쿼리문 작성
@Select("select * from todo where is_clear = 0 and user_id = #{userId}") List<TodoList> selectTodo(String userId);
Java
복사
ServiceImpl에서 리스트로 받은 정보를 맵으로 리턴
@Override public Map<String, Object> selectTodoContentByTodoIdx(String userId) { List<TodoList> todolist = todoRepository.selectTodo(userId); System.out.println(userId); return Map.of("todo", todolist); }
Java
복사
Controller에서 사용자ID에 맞는 todolist 정보를 받아 제공
@GetMapping("todo-list") public String todoList(Model model, @SessionAttribute Member auth) { Map<String, Object> commandMap = todoService.selectTodoContentByTodoIdx(auth.getUserId()); model.addAllAttributes(commandMap); System.out.println(commandMap); System.out.println(auth.getUserId()); return "/todo/todo-list"; }
Java
복사

[5] Todolist Update 기능 구현

Repository에 is_clear를 1로 수정하는 Update 쿼리문 작성
@Update("update todo set is_clear = 1 where todo_idx = #{todoIdx}") void deleteTodoByTodoIdx(int todoIdx);
Java
복사
ServiceImpl
@Override public void deleteTodoByTodoIdx(int todoIdx) { todoRepository.deleteTodoByTodoIdx(todoIdx); }
Java
복사
Controller에서 선택한 요소의 todoInx를 확인하고 쿼리문 진행
@PostMapping("remove") public String remove(int todoIdx) { todoService.deleteTodoByTodoIdx(todoIdx); return "redirect:/todo/todo-list"; }
Java
복사