我是Spring框架的新手。我坚持使用基本的CRUD功能。我正在尝试搜索用户名,然后确定输入的密码是否正确。目前,我试图至少只是在我的实体中查找特定的用户名。如何在Spring JPA中做到这一点?我只能使用ID进行搜索,而不能使用FieldNames。我想在Service中像这样实现它。 列出findCredentialsByUsername(String username);
然后在我的控制器中调用此服务,我将使用邮递员/浏览器网址来搜索用户名。
然后,Controller中的方法将具有以下内容 certificateRepository.findCredentialsByUsername(用户名); 那不是使用查询,只是基本的JPA方法。
只要找到,它将返回true或至少为我提供该用户名的详细信息。
我有以下实体。
@Entity
public class Credentials {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long id;
@Column
String username;
@Column
String password;
@Column
String firstname;
@Column
String lastname;
public Long getId() {
return id;
}
//ToString , Getters and Setters
//Needed for returning the changes on POSTMAN
@Override
public String toString() {
return "Credentials{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
", firstname='" + firstname + '\'' +
", lastname='" + lastname + '\'' +
'}';
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
}
我的Controllers,Services和Repository真是一团糟。我无法完全掌握Spring数据JPA这个东西的构造块吗?几天来,我一直在使用CRUD来爬网JPA的基本构建块。 :/
PS:
密码在数据库上未加密。对于基本的Spring JPA,我只是想做一个基本的Search / CRUD。 没有创建Web UI,我只是通过Postman对我的CRUD功能进行测试
答案 0 :(得分:1)
您正在寻找查询方法,只需使用字段名称
赋予的关键字 findBy示例: findBy 用户名(字符串用户名)
Query methods section for more information
因此,您只需要创建扩展 JpaRepository 或 CrudRepository 的界面:
@Repository
public interface CredentialsRepository extends JpaRepository<Credentials, Long> {
Optional<Credentials> findByUsername(String username);
}
然后是您的控制器:
@RestController
public class CredentialsController {
@Autowired
CredentialsRepository credentialsRepository;
@GetMapping("/check/{username}")
public String check(@PathVariable("username") String username) {
Optional<Credentials> credentials = CredentialsRepository.findByUsername(username);
return credentials.isPresent() ? "exist" : "doesn't exist";
}
}