我刚开始使用弹簧数据 MongoDb 和 Spring-Boot 。
在使用spring数据存储库时,我使用@query注释在界面中添加了一些基于mongo的json查询。
我想知道是否可以外化或分离在代码库外部的JSON查询,以便可以单独优化它
也没有与代码混合。
感谢您的建议。
这是我在界面中添加并使用@query注释注释的代码。
@Query(“{'firstname':?0,'lastname':?1}”) 列出findByCriteria(String firstname,String lastname);
以上是一个简单的例子。我也有涉及$和$或运营商的复杂条件。
我基本上想要实现的是将上面的本机mongo json查询外部化为配置文件,并在上面的注释中引用它。
当使用jpa和hibernate时,Spring数据支持类似的东西。但不确定我们是否可以使用spring spring mongodb和spring boot来做同样的事情。
答案 0 :(得分:1)
这样做(我只是为API解释)
假设您有一个实体user
在顶部会有用户域
public class User extends CoreDomain {
private static final long serialVersionUID = -4292195532570879677L;
@Length(min = 2)
private String name;
@Length(min = 2)
@UniqueUserName(message = "User name already registered,Please choose something Different")
private String userName;
@Length(min = 6)
private String password;
}
用户控制器
用户服务(界面)
用户ServiceImpl(服务实施)
Mongo存储库(因为我有MongoDb)
现在在 userController 中,您将按照这样的所有queries
,Param(Parameters)
,Pagerequest
public class UserController extends CoreController {
@Autowired
private UserService userService;
/*
* This controller is for getting the UserDetails on passing the UserId in
* the @param Annotation
*/
@GET
@Path("{id}")
public User getUser(@PathParam("id") String UserId) {
User user = new User();
user = userService.findUserId(UserId);
if (user == null)
throw new NotFoundException();
log.info("The userId you searched is having the details as :" + user);
return user;
}}
对于 serviceInterface ,您将拥有:
public interface UserService {
// Boolean authenticateUser(User user);
User findUserId(String UserId);
}
serviceImpl :
public class UserServiceImpl implements UserService {
@Setter
@Autowired
private UserRepository userRepository;
/*
* This method will find user on the basis of their userIds passed in the
* parameter.
*/
@Override
public User findUserId(String UserId) {
User userIdResult = userRepository.findOne(UserId);
log.info("The userDetail is" + userIdResult);
return userIdResult;
}
在user
的 mongoRepository 中,我们将:
默认查询findById(String userId);
希望这会对你有帮助。