it-swarm.com.ru

Реализация пользовательского метода CrudRepository?

Я читал о Crudrepository, который является интерфейсом для общих операций CRUD в репозитории для определенного типа.

Но мы можем создать наш собственный интерфейс и расширить CrudRepository.

Я посмотрел на пример онлайн и увидел, что они нигде не обеспечили имплантацию.

Образец:

@Transactional
public interface UserDao extends CrudRepository<User, Long> {

  /**
   * Return the user having the passed email or null if no user is found.
   * 
   * @param email the user email.
   */
  public User findByEmail(String email);

}

Должен ли аргумент совпадать с именем столбца или с именем метода, например "findBy" + columnName?

6
Nicky

Spring обеспечивает динамическую реализацию этих интерфейсов и внедряет их. Вы можете определить свои собственные методы, используя стандарты именования, определенные Spring, и он автоматически реализует их и выполняет запрос. Вот полная справочная документация . https://docs.spring.io/spring-data/jpa/docs/current/reference/html/

3
user3817206

Вы можете сделать так, чтобы ваш интерфейс расширял пользовательский интерфейс хранилища следующим образом:

UserDao.Java

public interface UserDao extends CrudRepository<User, Long>, YourCustomRepository<User, String> {
}

YourCustomRepository.Java

public interface YourCustomRepository<T, S>{
    public User findByName(String name);
}

Затем вы можете использовать метод, например:

YourControllerClass.Java

@Autowired
 private UserDao repo;
                       //An example method:
@RequestMapping("/getbyName/{name}")    
public User getUserByName(@PathVariable("name") String name){
      User user = repo.findByName(name); //your custom method called here
      return user;
    }

И обратите внимание, соглашение об именах для пользовательских методов выглядит так: "findBy .... ();"

2
Top_Pug

Для реализации вы будете в основном автоматически подключать этот репозиторий и использовать его метод ... Эти методы имеют внутреннюю реализацию, поэтому вы можете использовать их напрямую

@Service
class ImplClass{

@Autowired
UserDao userDao;

public void method(){
----
userDao.findByEmail([email protected]);
}

} 
0
Pankaj Kumar