본문 바로가기

사이드 프로젝트/To do list

[Spring Project] To do 리스트 조회

프로젝트 설정


  • Spring Boot 프로젝트에서 Thymeleaf 템플릿 엔진을 사용하려면 필요한 의존성을 추가해야 한다. build.gradle 파일에 다음과 같은 의존성을 추가해보자.
  •  MySQL을 사용하는 경우 mysql-connector-java도 추가

build.gradle

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    runtimeOnly 'mysql:mysql-connector-java'
}

 

 

데이터 베이스 설정


MySQL을 사용하여 할 일 목록을 관리하기 위한 데이터베이스 설정을 추가한다. application.properties 파일에 추가하면 된다.  

 

 

 

spring.datasource.url=jdbc:mysql://localhost:3306/todo_db?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=yourpassword
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

 

=> ddl-auto 설정 주의. create로 설정 시 빌드할 때마다 테이블이 삭제 후 재생성

 

 Todo 엔티티 생성


 

데이터베이스와의 상호작용을 처리하기 위해 Spring Data JPA의 JpaRepository를 상속받는 레포지토리를 작성.

package com.example.todoapp.entity;

import javax.persistence.*;

@Entity
@Table(name = "todos")
public class Todo {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false)
    private String title;

    // Getters and Setters
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    public String getTitle() { return title; }
    public void setTitle(String title) { this.title = title; }
}

 

TodoService 클래스 생성


 

비즈니스 로직을 처리하는 TodoService를 작성. 이 클래스는 레포지토리로부터 데이터를 가져온다. 

 

package com.example.todoapp.service;

import com.example.todoapp.entity.Todo;
import com.example.todoapp.repository.TodoRepository;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class TodoService {

    private final TodoRepository todoRepository;

    public TodoService(TodoRepository todoRepository) {
        this.todoRepository = todoRepository;
    }

    public List<Todo> getAllTodos() {
        return todoRepository.findAll();
    }
}

 

TodoController 생성


 

데이터를 Thymeleaf 템플릿으로 전달하는 컨트롤러를 작성.

package com.example.todoapp.controller;

import com.example.todoapp.service.TodoService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class TodoController {

    private final TodoService todoService;

    public TodoController(TodoService todoService) {
        this.todoService = todoService;
    }

    @GetMapping("/todos")
    public String getTodos(Model model) {
        model.addAttribute("todos", todoService.getAllTodos());
        return "index";
    }
}

 

결과 확인


 

 

결론


이번 포스팅에서는 Spring Boot와 Thymeleaf를 사용하여 간단한 Todo 리스트를 구현했다. 이제 목록을 클릭했을 때 상세 목록을 조회, 수정, 삭제하는 부분을 구현해보자.