使用spring boot外部化mongo json查询

时间:2016-01-16 04:16:52

标签: spring-boot mongodb-query spring-data-mongodb

我刚开始使用弹簧数据 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来做同样的事情。

1 个答案:

答案 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 中,您将按照这样的所有queriesParam(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);

希望这会对你有帮助。