S SmartDocs
Series: Springboot java 30 lines · Updated 2026-08-14

UserRepository.java

Springboot/bookstore-api/src/main/java/com/example/bookstore/repository/UserRepository.java

package com.example.bookstore.repository;

import com.example.bookstore.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.Optional;

/**
 * 使用者 Repository(資料存取層)。
 * 繼承 JpaRepository 後即可免費獲得 save / findById / findAll 等方法,
 * 下方再依需求宣告「衍生查詢」。
 */
public interface UserRepository extends JpaRepository<User, Long> {

    /**
     * 依帳號查詢使用者。
     * 產生 SQL:SELECT * FROM users WHERE username = ?
     *
     * 回傳 Optional<User>:
     * 明確表達「可能查不到」,呼叫端必須處理查無資料的情況
     * (例如 orElseThrow),可避免 NullPointerException。
     */
    Optional<User> findByUsername(String username);

    /** 註冊時檢查帳號是否已被使用 */
    boolean existsByUsername(String username);

    /** 註冊時檢查 Email 是否已被使用 */
    boolean existsByEmail(String email);
}

Related articles