Spring 数据存储库 MongoDB
Spring data repository MongoDB
我使用 Spring 数据并将按名字、姓氏、电子邮件或用户名搜索条目。我必须设置四次参数还是只能设置一次参数?
谢谢!
userRepository.findUsersByFirstnameOrSurnameOrEmailOrUsername("Mustermann", "Mustermann",
"Mustermann", "Mustermann");
如果您希望根据方法名称自动生成查询,那么是的,您将必须传递 4 个参数,并且如果在某些情况下所有这些参数都可以具有相同的值,则必须是相同的值通过了4次。
但是,如果您愿意在传递参数的便利性和自动生成查询之间进行权衡,您可以使用 @Query
注释来生成您自己的查询。此注释将采用任何有效的 MongoDB 查询,因此对于您的情况,MongoDB 查询将是:
> db.user.find({ $or : [{"firstName" : "Mustermann"}, {"surname" : "Mustermann"}, {"email" : "Mustermann"}, {"userName" : "Mustermann"}] });
因此您可以将查询编码为:
@Query("$or : [{'firstName' : ?1}, {'surname' : ?1}, {'email' : ?1}, {'userName' : ?1}]")
List<User> findUsersByFirstnameOrSurnameOrEmailOrUsername(String keyword);
我使用 Spring 数据并将按名字、姓氏、电子邮件或用户名搜索条目。我必须设置四次参数还是只能设置一次参数? 谢谢!
userRepository.findUsersByFirstnameOrSurnameOrEmailOrUsername("Mustermann", "Mustermann",
"Mustermann", "Mustermann");
如果您希望根据方法名称自动生成查询,那么是的,您将必须传递 4 个参数,并且如果在某些情况下所有这些参数都可以具有相同的值,则必须是相同的值通过了4次。
但是,如果您愿意在传递参数的便利性和自动生成查询之间进行权衡,您可以使用 @Query
注释来生成您自己的查询。此注释将采用任何有效的 MongoDB 查询,因此对于您的情况,MongoDB 查询将是:
> db.user.find({ $or : [{"firstName" : "Mustermann"}, {"surname" : "Mustermann"}, {"email" : "Mustermann"}, {"userName" : "Mustermann"}] });
因此您可以将查询编码为:
@Query("$or : [{'firstName' : ?1}, {'surname' : ?1}, {'email' : ?1}, {'userName' : ?1}]")
List<User> findUsersByFirstnameOrSurnameOrEmailOrUsername(String keyword);