Gradle 추가(web,jpa,mariadb,lombok)
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.mariadb.jdbc:mariadb-java-client:3.0.6'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
application.properties. 추가
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3306/sys
spring.datasource.username=root
spring.datasource.password=
spring.jpa.show_sql = true
spring.jpa.show_sql 을 true 로 설정해 줌으로써 jpa가 작성하고 실행해주는 쿼리를 콘솔에서 볼 수 있다.
로그인 으로 예제를 만들어 보겠다.
가장 먼저 테이블을 만든다.
create table admin(
id varchar(50) not null,
password varchar(50) not null,
primary key (id)
)
이 테이블을 매칭할 Entity를 만들어 준다.
package com.cafe.admin.entity;
import lombok.*;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Builder
@Entity
@Table(name = "Admin")
public class Admin {
@Id
@Column
private String id;
@Column
private String password;
}
이때 builder를 추가해주면 추후에 entity로 변환할때 편리하다.
Entity에는 필히 ID 즉 PRIMARY_KEY가 있어야 하는데 해당 컬럼에는 @Id를 붙여주면 끝이다.
이제 requestDTO를 만들어 주겠다
해당 DTO는 요청을 받아 필요한 정보를 제공하는 역할을 한다.
import com.cafe.admin.entity.Admin;
import lombok.*;
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
public class AdminReqDTO {
private String id;
private String password;
public Admin toEntity(){
return Admin.builder()
.id(id)
.password(password)
.build();
}
}
Entity로 변환시켜줄때 builder를 사용하면 컬럼이 많은 상황에서 더 편리하게 할수있다.
이제 응답을 받을 DTO를 만들어 보자.
package com.cafe.admin.dto;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
public class AdminResDTO {
private String id;
}
로그인에 사용하기에 비밀번호는 받지 않는것으로 했다.
이번엔 Repository다
package com.cafe.admin.repository;
import com.cafe.admin.entity.Admin;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface AdminRepository extends JpaRepository<Admin,String> {
public Admin findAdminByIdAndPassword(String id,String password);
}
기본적인 메서드 들이 내장되어있지만, 로그인을 위해 아이디와 비밀번호를 받아 Admin을 돌려주는 메서드를 추가했다.
참고로 Repository는 interface로 만들고
JpaRepository<Entity,ID type>
Entity이름과 ID 자료형 타입을 꼭 적어줘야 한다.
모든 준비는 끝났다, service에서 보자.
public String selectAdmin(AdminReqDTO adminReqDTO) {
Admin admin =adminReqDTO.toEntity();
admin = adminRepository.findAdminByIdAndPassword(admin.getId(),admin.getPassword());
AdminResDTO adminResDTO=new AdminResDTO(admin.getId());
if (adminResDTO.getId() == null) {
return "";
} else {
session.setAttribute("admin", adminResDTO.getId());
return "success";
}
}
필요에 따라 RequestDTO를 Entity로 변환해 준 후,
레포지토리에 내장된 메서드나 커스텀메서드를 통해 쿼리를 실행 후,
ResponseDTO로 Entity를 받아주면 된다.
'Spring & SpringBoot' 카테고리의 다른 글
| Spring security 시작하기 (0) | 2023.01.20 |
|---|---|
| MockMVC (0) | 2023.01.13 |
| SpringBoot Swagger UI사용하기 (0) | 2022.12.19 |
| Spring AOP (0) | 2022.12.16 |
| SpringBoot 이전 페이지 URL가져오기 (0) | 2022.12.09 |