Как искать [FieldName] в Spring Data JPA - PullRequest
0 голосов
/ 09 апреля 2019

Я новичок в Spring Framework.Я застрял в основных функциональных возможностях CRUD.Я пытался найти имя пользователя, а затем определить, правильный ли введенный пароль.На данный момент я пытаюсь хотя бы просто найти конкретное имя пользователя в моей сущности.Как мне это сделать весной JPA?Я мог только искать с помощью идентификаторов, но не FieldNames.Я хотел реализовать это в Сервисе.Перечислите findCredentialsByUsername (String username);

И вызовите эту службу в моем контроллере, к которой я буду искать имя пользователя, используя URL-адрес почтальона / браузера.

В этом случае метод в контроллере будет иметь что-то вродеthis credentialsRepository.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;
}

}

Мои контроллеры, сервисы и репозиторий - довольно беспорядок. Я не могу понять, что такое строительные блоки Spring Data JPA ?.В течение нескольких дней я сканировал веб-сайты на предмет этих основных строительных блоков для JPA с использованием CRUD.: /

PS:

Пароль не зашифрован в БД.Для базового Spring JPA я просто хотел сделать основной поиск / CRUD, если это возможно.Веб-интерфейс не создается, я просто тестирую свои функции CRUD через Postman

1 Ответ

1 голос
/ 09 апреля 2019

Вы ищете методы запроса , просто используйте ключевое слово findBy , за которым следует имя поля

Пример: findBy Имя пользователя (String username)

Раздел методов запроса для получения дополнительной информации

Так что вам просто нужно создать интерфейс , который расширяет 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"; 

  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...