沿着findBy添加addUser

时间:2017-04-23 07:49:01

标签: java spring

我有一个扩展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将新用户添加到我的数据库?我想确保我的数据库中没有重复的用户名。

1 个答案:

答案 0 :(得分:0)

您可以展开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
      }

  }
}