我正在阅读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);
}
参数是否必须与列名或方法名相同,如&#34; findBy&#34; + columnName?
答案 0 :(得分:6)
Spring提供了这些接口的动态实现并注入它们。您可以使用Spring定义的命名标准定义自己的方法,它将自动实现它们并执行查询。这是完整的参考文档。 https://docs.spring.io/spring-data/jpa/docs/current/reference/html/
答案 1 :(得分:3)
您可以让您的界面扩展自定义存储库界面,如下所示:
<强> 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;
}
请注意自定义方法的命名约定是&#34; findBy ....();&#34;
答案 2 :(得分:-1)
对于实现,您将基本上自动装配此存储库并使用其方法...这些方法具有内部实现,因此您可以直接使用它们
@Service
class ImplClass{
@Autowired
UserDao userDao;
public void method(){
----
userDao.findByEmail(email@abc.com);
}
}