인생 디벨로퍼

[Bank App] 8강 계좌생성하기 본문

Project/개인 Project - Bank App

[Bank App] 8강 계좌생성하기

뫄뫙뫄 2023. 6. 14. 17:20
728x90

Dto 만들기

package shop.mtcoding.bankapp.dto.account;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class AccountSaveReqDto {
    private String number;
    private String password;
}

Controller

 @Autowired
    private HttpSession session;

    @PostMapping("/account")
    public String save(AccountSaveReqDto accountSaveReqDto) {
        User principal = (User) session.getAttribute("principal");
        if (principal == null) {
            throw new CustomException("로그인이 필요한 서비스입니다.", HttpStatus.UNAUTHORIZED);
        }

        if (accountSaveReqDto.getNumber() == null ||
                accountSaveReqDto.getNumber().isEmpty()) {
            throw new CustomException("number를 입력해주세요", HttpStatus.BAD_REQUEST);
        }
        if (accountSaveReqDto.getPassword() == null ||
                accountSaveReqDto.getPassword().isEmpty()) {
            throw new CustomException("password를 입력해주세요", HttpStatus.BAD_REQUEST);
        }
        // 서비스에 계좌생성() 호출
        return "redirect:/";
    }

AccountSaveReqDto -> Account 모델로 변환

package shop.mtcoding.bankapp.dto.account;

import lombok.Getter;
import lombok.Setter;
import shop.mtcoding.bankapp.model.account.Account;

@Getter
@Setter
public class AccountSaveReqDto {
    private String number;
    private String password;

    public Account toModel(int principalId) {
        Account account = new Account();
        account.setNumber(number);
        account.setPassword(password);
        account.setUserId(principalId);
        account.setBalance(1000L);
        return account;

    }
}

 

service 에서 toModel 을 생성.(toEntity)

현재 전달해야 할 데이터 AccountSaveReqDto + principalId 를 한번에 전달.

 


Service

package shop.mtcoding.bankapp.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import shop.mtcoding.bankapp.dto.account.AccountSaveReqDto;
import shop.mtcoding.bankapp.model.account.Account;
import shop.mtcoding.bankapp.model.account.AccountRepository;

@Service
public class AccountService {

    @Autowired
    private AccountRepository accountRepository;

    @Transactional
    public void 계좌생성(AccountSaveReqDto accountSaveReqDto, int principalId) {
        Account account = accountSaveReqDto.toModel(principalId);
        accountRepository.insert(account);
    }

}

jsp 수정

대충 복붙해둔 jsp. form 테그와 name 값 수정.


결과

로그인 되지 않았을때, 

로그인후 list 를 만들지 않아, 메인에는 안나옴.

h2 console로 확인해보자

insert 성공적!

728x90