본문 바로가기

컴퓨터공학/Spring & Hibernate

Spring> Spring Boot> Thymeleaf Crud

대충 이런 구조

 

 

 

jpa와 mysql connector 추가

 

application.properties에 세션 사용자 로그인 비밀번호 입력

 

entity 클래스 파일.

사실 이전 코드 복붙함

 

dao 역할을 해 줄 repository 인터페이스

딱히 구현 메서드는 작성하지 않는다.

 

dao를 시키는 service 인터페이스  

이전 코드 복붙함

package com.Seol.springboot.thymeleafdemo.service;

import java.util.List;
import java.util.Optional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.Seol.springboot.thymeleafdemo.dao.EmployeeRepository;
import com.Seol.springboot.thymeleafdemo.entity.Employee;

@Service
public class EmployeeServiceImpl implements EmployeeService {

	private EmployeeRepository employeeRepository;
	
	@Autowired
	public EmployeeServiceImpl( EmployeeRepository theEmployeeRepository) {
		employeeRepository = theEmployeeRepository;
	}
	
	@Override
	public List<Employee> findAll() {
		return employeeRepository.findAll();
	}

	@Override
	public Employee findById(int theId) {
		Optional<Employee> result = employeeRepository.findById(theId);
		
		Employee theEmployee = null;
		if (result.isPresent()) {
			theEmployee = result.get();
		}
		else {
			throw new RuntimeException("did not find employee id - " + theId);
		}
		
		return theEmployee;
	}

	@Override
	public void save(Employee theEmployee) {
		employeeRepository.save(theEmployee);
	}

	@Override
	public void deleteById(int theId) {
		employeeRepository.deleteById(theId);
	}

}

service 인터페이스 구현

 

메모리에 생성하여 사용하는 이전 컨트롤러는 삭제하고

서비스를 이용하는 컨트롤러

 

 

 

index.html을 만들어서 localhost로 접속하면 employees/list 로 redirect 하게 만들자 

src-main-resources-static 경로에 index.html을 만들고

이런 내용을 넣어주면 경로 안쓰고 localhost:8080만 넣어줘도 redirect된다.

 


사전 작업

thymeleaf expression 

자세한 설명은 

 

Tutorial: Thymeleaf + Spring

 

Tutorial: Thymeleaf + Spring

Preface This tutorial explains how Thymeleaf can be integrated with the Spring Framework, especially (but not only) Spring MVC. Note that Thymeleaf has integrations for both versions 3.x and 4.x of the Spring Framework, provided by two separate libraries c

www.thymeleaf.org

 

 

Post/Redirect/Get pattern

자세한 설명 

Post/Redirect/Get - Wikipedia

 

Post/Redirect/Get - Wikipedia

Diagram of a double POST problem encountered in user agents. Diagram of the double POST problem above being solved by PRG. Post/Redirect/Get (PRG) is a web development design pattern that lets the page shown after a form submission be reloaded, shared, or

en.wikipedia.org

 

 

thymeleaf 위치 경로를 바꾸자

 

list view 반환값도 바꾼다.

 

 

 

 

 

데이터 추가 

 

 

이렇게만 해도 last name으로 순서로 나열한다.

메서드 이름으로 쿼리를 실행하는 spring data jpa 기능이다.

query method  자세한 내용은 다음을 보자

 

Spring Data JPA - Reference Documentation

 

Spring Data JPA - Reference Documentation

Example 109. Using @Transactional at query methods @Transactional(readOnly = true) interface UserRepository extends JpaRepository { List findByLastname(String lastname); @Modifying @Transactional @Query("delete from User u where u.active = false") void del

docs.spring.io

서비스에서 메서드 수정

 

 

 


데이터 업데이트 

1. 업데이트 버튼 만들기

2. form 만들기

3. form 데이터 처리

 

update를 통해서  form 페이지에 가면 값이 있는 객체가 보내져서 id 값이 있다.

이것을 save로 보내면 id값이 있으니 update 기능 실행

 

add를 통해서 form 페이지에 가면 값이 없는 빈 객체가 보내지고 id 값이 없다.

이것을 save로 가면 id값이 없으니 add 기능 실행

 

 

 


삭제 기능

1. 삭제 버튼을 넣는다.

2. 컨트롤러에 삭제를 추가한다.

 

 

 

 

뷰에 보낼 때 모델 바구니에다가 객체에 이름표 붙여 담아 보내고

뷰에서 컨트롤러로 올 때 파라미터 또는 모델에 담아서 보낸다.