我有一个扩展AccountRepository
的自定义JpaRepository
接口:
import org.springframework.data.jpa.repository.JpaRepository;
import com.boot.cut_costs.config.security.CustomUserDetails;
public interface AccountRepository extends JpaRepository<CustomUserDetails, String>{
public CustomUserDetails findByUsername(String username);
}
如何添加另一种方法
addUser(String username, String password)
来使用此AccountRepository将新用户添加到数据库中?我想确保数据库中没有重复的用户名。 最佳答案
您可以扩展CrudRepository
而不是JpaRepository
。CrudRepository
是JpaRepository
的子类,它提供所有CRUD方法,例如保存,删除等。
public interface AccountRepository extends CrudRepository<CustomUserDetails, String>{
public CustomUserDetails findByUsername(String username);
}
然后,在您的服务中您将可以使用:
accountRepository.save(newUser);
如果要避免重复的用户名,可以在数据库列上设置
unique
包含。如果从Java实体生成数据库,则可以这样注释用户名字段:
@Column(unique=true)
String username;
您还可以提供自己的implementation:
class AccountRepositoryImpl implements AccountRepository { //AccountRepository is extending CrudRepository
public void addUser(User user) {
if(!exists(user.getId())){ //methods exists and save come from CrudRepository
save(user);
} else {
//handle error
}
}
}