라이브러리(lib) 추가 하기
- JPA
- MariaDB
- Spring Data JPA
- MariaDB Driver
- 해당 'dependency' 부분 복사
- 복사한 'dependency'를 현재 작업 중인 프로젝트에 붙여넣기
- 'Load Maven Changes' 아이콘 클릭
추가된 라이브러리 확인
- JPA
- MariaDB
DataSource Error 발생
- MariaDB 10.6.5
- ip: 127.0.0.1
- post: 43306
- db instance: minicampus
- id: minicampus_user
- pwd: a1234
spring.datasource.url
Add - Database - MariaDB
- Host: localhost
- Port: 43306
- User: minicampus_user
- Password: a1234
- Database: minicampus
- URL: jdbc:mariadb://localhost:43306/minicampus
MariaDB
spring:
datasource:
url: jdbc:mariadb://localhost:43306/minicampus
driver-class-name: org.mariadb.jdbc.Driver
username: minicampus_user
password: a1234
JPA
jpa:
generate-ddl: true
hibernate:
ddl-auto: update
show-sql: true
정상적으로 실행됨
- Name: userId
- Type: java.lang.String
package com.zerobase.fastlms.membe.entity;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.Id;
import java.time.LocalDateTime;
@Data
@Entity
public class Member {
@Id
private String userId;
private String userName;
private String phone;
private String password;
private LocalDateTime regDt;
}
package com.zerobase.fastlms.member.repository;
import com.zerobase.fastlms.membe.entity.Member;
import org.springframework.data.jpa.repository.JpaRepository;
public interface MemberRepository extends JpaRepository<Member, String> {
}
jpa:
generate-ddl: true
hibernate:
ddl-auto: update
show-sql: true
- 데이터베이스를 자동 업데이트 수행
- 아직 데이터는 없지만 테이블이 만들어진 모습
- 회원가입이 완료되면 출력할 페이지 생성
- 회원 정보 입력 - '회원 가입 하기'
- 가입 완료 페이지
- 웹페이지에서 입력한 값이 테이블에 저장된 모습
- MemberInput으로 값들을 받고
- 각각의 값들을 해당하는 위치에 저장
- MemberInput(userId=test@unknown.com, userName=홍길동, phone=010-1111-2222, password=1234, regDt=null)
- Hibernate: select member0_.user_id as user_id1_0_0_, member0_.password as password2_0_0_, member0_.phone as phone3_0_0_, member0_.reg_dt as reg_dt4_0_0_, member0_.user_name as user_nam5_0_0_ from member member0_ where member0_.user_id=?
- Hibernate: insert into member (password, phone, reg_dt, user_name, user_id) values (?, ?, ?, ?, ?)
- 동일한 이메일 값을 입력하면 이전값이 지워지는 현상을 막기는 서비스를 위한 인터페이스 생성
package com.zerobase.fastlms.member.service;
import com.zerobase.fastlms.member.model.MemberInput;
public interface MemberService {
boolean register(MemberInput parameter);
}
- implements로 인터스페이스를 구현
- MemberController.java에서 받던 MemberInput을 받아서 memberRepository에 저장
package com.zerobase.fastlms.member.service;
import com.zerobase.fastlms.membe.entity.Member;
import com.zerobase.fastlms.member.model.MemberInput;
import com.zerobase.fastlms.member.repository.MemberRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
@RequiredArgsConstructor
@Service
public class MemberServiceImpl implements MemberService {
private final MemberRepository memberRepository;
@Override
public boolean register(MemberInput parameter) {
Member member = new Member();
member.setUserId(parameter.getUserId());
member.setUserName(parameter.getUserName());
member.setPhone(parameter.getPhone());
member.setPassword(parameter.getPassword());
member.setRegDt(LocalDateTime.now());
memberRepository.save(member);
return false;
}
}
package com.zerobase.fastlms.member.controller;
import com.zerobase.fastlms.member.model.MemberInput;
import com.zerobase.fastlms.member.service.MemberService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import javax.servlet.http.HttpServletRequest;
@RequiredArgsConstructor
@Controller
public class MemberController {
private final MemberService memberService;
/*
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
*/
@GetMapping("/member/register")
public String register() {
return "member/register";
}
@PostMapping("/member/register")
public String registerSubmit(HttpServletRequest request,
MemberInput parameter) {
boolean result = memberService.register(parameter);
return "member/register_complete";
}
}
- 쿼리: select * from member;
- 쿼리: delete from member where 1 = 1;
- 다시 정보 입력
- 가입 완료 페이지
Optional<Member> optionalMember =
memberRepository.findById(parameter.getUserId());
if (optionalMember.isPresent()) {
//현재 userId에 해당하는 데이터 존재
return false;
}
@PostMapping("/member/register")
public String registerSubmit(Model model,
HttpServletRequest request,
MemberInput parameter) {
boolean result = memberService.register(parameter);
model.addAttribute("result", result);
return "member/register_complete";
}
<body>
<div th:if="${result}">
<h1>회원 가입 결과</h1>
<p>회원 가입이 완료 되었습니다.</p>
</div>
<div th:if="${result eq false}">
<h1>회원 가입 결과</h1>
<p>회원 가입에 실패하였습니다.</p>
</div>
</body>
- 동일한 이메일(ID) 입력
- 회원 가입 실패 메시지 노출
'cs > java-spring-boot' 카테고리의 다른 글
[Zero-base] 6-11. 회원가입 후 메일 전송 (0) | 2022.02.16 |
---|---|
[Zero-base] 6-10. JavaMailSender를 통한 메일 전송 설정 및 메일 전송 테스트 (Gmail) (0) | 2022.02.16 |
[Zero-base] 6-8. 회원가입 입력폼 HTML작성과 서버 전송 (0) | 2022.02.15 |
[Zero-base] 6-7. 메인 페이지 작성 및 메뉴 링크 작성 (0) | 2022.02.15 |
[Zero-base] 6-6. Thymeleaf를 통한 View페이지 매핑 (서버사이트 자바 템플릿 엔진) (0) | 2022.02.15 |