我有一个扩展 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
。
CrudRepository
是 JpaRepository
的子类,它提供了 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/