我是Spring框架的新手。我被困在基本的CRUD功能上。我尝试做的是搜索用户名,然后确定输入的密码是否正确。现在,我试图至少在我的实体中找到特定的用户名。我如何在Spring JPA中做到这一点?我只能使用ID搜索,但不能搜索FieldNames。我想在Service中像这样实现它。列表用户名(String FindCredentialsByUsername);
并在我的控制器中调用此服务,我将使用Postman/浏览器url搜索用户名。
然后,控制器中的方法将拥有类似这样的credentialsRepository.findCredentialsByUsername(username);,它不使用查询,只使用基本的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;
}
}
我的控制器、服务和存储库相当混乱,我不能完全理解Spring data JPA?这个东西的构建块的诀窍。我已经在网络上爬行了几天,寻找JPA使用CRUD的基本构建块。:/
PS:
数据库上的密码是未加密的。对于一个基本的Spring JPA,如果可能的话,我只想做一个基本的搜索/ CRUD。没有创建Web,我只是通过Postman
测试我的CRUD功能
发布于 2019-04-10 04:17:50
您正在寻找查询方法,只需使用关键字findBy,该关键字由字段名允许
示例:findByUsername(String用户名)
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";
}
}
https://stackoverflow.com/questions/55596137
复制相似问题