java - 在 findBy 旁边添加 addUser

标签 java spring

我有一个扩展 JpaRepository 的自定义 AccountRepository 接口(interface):

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

CrudRepositoryJpaRepository 的子类,它提供了 CRUD 的所有方法,如保存、删除等。

public interface AccountRepository extends CrudRepository<CustomUserDetails, String>{
    public CustomUserDetails findByUsername(String username);
}

然后在您的服务中您将能够使用:

accountRepository.save(newUser);

如果您想避免重复的用户名,可以在数据库列上设置unique constain。

如果您从 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
      }

  }
}

关于java - 在 findBy 旁边添加 addUser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43568664/

相关文章:

java - 如何使用 JSF2 处理多态性?

java - Jenkins启动错误: jenkins. model.InvalidBuildsDir : does not contain ${ITEM_FULL_NAME} or ${ITEM_ROOTDIR},无法区分项目

java - if 语句产生不正确的结果

java - spring-boot-starter-integration 1.4.3 性能下降

java - 在 <foreach> 中使用 <form> 几次

java - 如何使用JMagick获取RGB值?

java - 可以处理运行时异常吗?

spring - 使用 Swagger 生成 Netflix Feign 代码

java - 使用@JsonCreator 和@JsonProperty 未按预期生成 Json 响应

java - 多个带有配置文件的 Spring Boot 应用程序类