首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Spring Data JPA中搜索[FieldName]

如何在Spring Data JPA中搜索[FieldName]
EN

Stack Overflow用户
提问于 2019-04-09 23:18:07
回答 1查看 1.9K关注 0票数 0

我是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功能

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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"; 

  }

}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55596137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档