Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java CrudRepository自定义方法实现?_Java_Spring_Hibernate_Spring Boot - Fatal编程技术网

Java CrudRepository自定义方法实现?

Java CrudRepository自定义方法实现?,java,spring,hibernate,spring-boot,Java,Spring,Hibernate,Spring Boot,我读到的是Crudepository,它是一个接口,用于特定类型的存储库上的通用CRUD操作 但我们可以创建自定义界面并扩展Crudepository 我在网上查看了这个示例,发现他们没有在任何地方提供实现 @Transactional 公共接口UserDao扩展了crudepository{ /** *返回已传递电子邮件的用户,如果找不到用户,则返回null。 * *@param向用户发送电子邮件。 */ 公共用户findByEmail(字符串电子邮件); } 参数是否必须与列名或方法名

我读到的是Crudepository,它是一个接口,用于特定类型的存储库上的通用CRUD操作

但我们可以创建自定义界面并扩展Crudepository

我在网上查看了这个示例,发现他们没有在任何地方提供实现

@Transactional
公共接口UserDao扩展了crudepository{
/**
*返回已传递电子邮件的用户,如果找不到用户,则返回null。
* 
*@param向用户发送电子邮件。
*/
公共用户findByEmail(字符串电子邮件);
}

参数是否必须与列名或方法名相同,如“findBy”+columnName?

Spring提供了这些接口的动态实现并将其注入。您可以使用Spring定义的命名标准定义自己的方法,它将自动实现这些方法并执行查询。这是完整的参考文档。

您可以让界面扩展自定义存储库界面,如下所示:

UserDao.java


请注意,自定义方法的命名约定是“findBy….();”

yes。但需要更正的是,它应该是用该db列名注释的字段名。例如,您可以将db列名作为work_email,但在java实体类中,映射的字段可以是email。在这种情况下,方法名称应该是findByEmail而不是FindByWorkerMail。如何实现方法YourCustomRepository.findByName()?这些方法不是您自己实现的。Spring会自动为您实现它们并执行查询。您只需调用以下方法:User=repo.findByName(name);注意:UserDoa repo引用是@Autowired
@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);

}
public interface UserDao extends CrudRepository<User, Long>, YourCustomRepository<User, String> {
}
public interface YourCustomRepository<T, S>{
    public User findByName(String name);
}
@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;
    }