Spring

이메일 주소가 유사한 모든 DB 번호 합계 (Spring Security-Java)

기록만이살길 2021. 3. 16. 05:04
반응형

이메일 주소가 유사한 모든 DB 번호 합계 (Spring Security-Java)

1. 질문(문제점):

그래서 스프링 부트 Security에 웹 애플리케이션을 구축하고 있습니다.

내 응용 프로그램을 사용하면 현재 로컬에서 등록 및 로그인 할 수 있으며 Google 및 링크드 인 서버 제공 업체를 사용하여 로그인 할 수 있습니다. 등록 후 비트 코인을 여러 개 제출하도록 요청한 다음 프로필의 DB에 저장합니다.

다른 제공 업체에 등록 할 때마다 DB에 새 프로필이 저장되며 일반적인 것은 이메일입니다. 그러나 모든 프로필이 분리되어 있기 때문에 비트 코인은 다를 것입니다.

내가 원하는 것은 동일한 이메일 (다른 공급자, 하나의 이메일)을 가진 사람들을 위해 "비트 코인"속성을 요약하여 동일한 값으로 각 페이지에 표시하는 것입니다.

이 클래스를 사용하여 내 DB에 액세스하고 있습니다.

public interface UserRepository extends JpaRepository<User, Long> {
User findByRegName(String regName);

}

그리고 이것은 인증 된 사용자 페이지에서 비트 코인을보기위한 메인 컨트롤러에 있습니다.

    public String wallet(Model model) {
    Authentication authentication = SecurityContextHolder.getContext().getAuthentication();

    String regName = authentication.getName();

    User user = userRepository.findByRegName(regName);
    model.addAttribute("user", user);
    return "wallet";
}

DB는 다음과 같습니다

나는 코딩의 초보자임을 유의하십시오. 간단한 설명을 주시면 감사하겠습니다

또한 표시 할 추가 코드가 필요한 경우 알려주십시오.

2. 해결방안:

저장소는 다음과 같아야합니다.

public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByEmail(String email);
}

일치하는 이메일을 가진 모든 사용자가 반환됩니다. 컨트롤러에서 반환 된 모든 사용자를 반복하고 비트 코인 값을 합산 할 수 있습니다.

List<User> users = userRepository.findByRegName(regName);
int total = 0;
for(User user:users) {
    total = total + user.getBitcoin()
}
model.addAttribute("totalBitcoin", total);
65680062
반응형