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
복사