web-dev-qa-db-fra.com

Mise en œuvre de la méthode personnalisée CrudRepository?

Je lisais à propos de Crudrepository, une interface pour les opérations CRUD génériques sur un référentiel pour un type spécifique.

Mais nous pouvons créer notre interface personnalisée et étendre CrudRepository.

J'ai consulté l'exemple en ligne et constaté qu'ils n'avaient fourni aucune implémentation.

Échantillon:

@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);

}

L'argument doit-il avoir le même nom que le nom de la colonne ou le nom de la méthode, comme "findBy" + columnName?

6
Nicky

Spring fournit l'implémentation dynamique de ces interfaces et les injecte. vous pouvez définir vos propres méthodes à l'aide des normes de dénomination définies par Spring. Ces dernières seront automatiquement implémentées et exécutées. Voici la documentation de référence complète. https://docs.spring.io/spring-data/jpa/docs/current/reference/html/

3
user3817206

Vous pouvez avoir votre interface étendre une interface de référentiel personnalisé comme ceci:

UserDao.Java

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

YourCustomRepository.Java

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

Vous pouvez ensuite utiliser la méthode par exemple:

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;
    }

Notez également que la convention de dénomination des méthodes personnalisées est "findBy .... ();"

2
Top_Pug

Pour l'implémentation, vous allez essentiellement autoriser le transfert de ce référentiel et utiliser sa méthode ... Ces méthodes ont une implémentation interne afin que vous puissiez les utiliser directement

@Service
class ImplClass{

@Autowired
UserDao userDao;

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

} 
0
Pankaj Kumar