작성완료

Spring CRUD 구현
Spring CRUD 구현을 위해 필요한 의존성 설치, 설정 정보 주입, 컨트롤러, 서비스, 레포지토리, 엔티티 생성 방법을 설명합니다. 각 구성 요소의 코드 예시와 함께 MySQL 데이터베이스와의 연결 설정도 포함되어 있습니다.
필요한 Depedencies 설치
- GraalVM Native Support
- Spring Boot DevTools
- LomBok
- Spring Configuration Processor
- Spring Web
- MySQL Driver
- Spring Data JPA
설정 정보 주입
/src/main/resources/application.properties
# SERVERserver.port = 8080
# DBspring.datasource.url = jdbc:mysql://000.000.000.000:3306/DB_NAME
spring.datasource.username = root
spring.datasource.password = 0000
spring.datasource.driver-class-name = com.mysql.jdbc.Driver
spring.jpa.database = mysql
spring.jpa.show-sql = true
# LOGlogging.level.root = off
Controller 생성
/src/main/com/group/project/controller/UserController.java
package com.sanguk.restapi.controller;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.sanguk.restapi.entity.User;
import com.sanguk.restapi.service.UserService;
import jakarta.websocket.server.PathParam;
@RestController
@RequestMapping("/api/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping
public List<User> getUsers(@PathParam("q") Optional<String> q) {
return userService.getUsers(q.isEmpty() ? "" : q.get());
}
@PostMapping
public void postUser(@RequestBody Map<String, Object> body) {
String USR_NM = (String) body.get("USR_NM");
userService.postUser(USR_NM);
}
}
Service 생성
/src/main/com/group/project/service/UserService.java
package com.sanguk.restapi.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.sanguk.restapi.entity.User;
import com.sanguk.restapi.repository.UserRepository;
@Service
public class UserService {
@Autowired
public UserRepository userRepository;
public List<User> getUsers(String q) {
return userRepository.getUsers(q);
}
public void postUser (String USR_NM) {
userRepository.postUser(USR_NM);
}
}
Repository 생성
/src/main/com/group/project/repository/UserRepository.java
package com.sanguk.restapi.repository;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import com.sanguk.restapi.entity.User;
import jakarta.transaction.Transactional;
public interface UserRepository extends JpaRepository<User, Long> {
@Query(value = "SELECT * FROM TB_USER WHERE USR_NM LIKE %:q%", nativeQuery = true)
public List<User> getUsers(String q);
@Query(value = "SELECT LAST_INSERT_ID() AS ID", nativeQuery = true)
public Object getLastInsertId();
@Query(value = "INSERT INTO TB_USER (USR_NM) VALUES (:USR_NM)", nativeQuery = true)
@Modifying
@Transactional
public Object postUser(String USR_NM);
}
Entity 생성
/src/main/com/group/project/entity/User.java
package com.sanguk.restapi.entity;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.Data;
@Entity
@Data
@Table(name = "TB_USER")
public class User {
@Id
@Column(name = "USR_SQ")
private Long sq;
@Column(name = "USR_NM")
private String nm;
@Column(name = "USR_AGE")
private Integer age;
@Column(name = "USR_DEL_DT")
private String del_dt;
@Column(name = "USR_MOD_DT")
private String mod_dt;
@Column(name = "USR_CRT_DT")
private String crt_dt;
}