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