我有新的案例在使用Spring和MongoDB的FindOne中使用符号



我在 findOne语句中有问题;我想通过退出用户名来获取用户名在我的应用程序中登录函数:

春季代码

@RestController
@RequestMapping("/enduser")
public class enduserRestCountroller {
    
    @Autowired
    enduserRepository enduserRepository;
    MongoOperations mongoOperations;
    
     //create
    @RequestMapping(method = RequestMethod.POST,consumes = MediaType.APPLICATION_JSON_VALUE)
    public void create(@RequestBody enduser enduser){
    enduserRepository.save(enduser);
    }
    
    
    @RequestMapping(value = "/list", method = RequestMethod.GET)
    
    public List<enduser> readall(  ){
    return enduserRepository.findAll();
    }
    @RequestMapping(value = "/{id}" ,method=RequestMethod.GET)
    @ResponseStatus(HttpStatus.OK)
    @CrossOrigin
    public @ResponseBody enduser read(@PathVariable String id){
    return enduserRepository.findOne(id);
    }
    
    @RequestMapping(method = RequestMethod.PUT,consumes = MediaType.APPLICATION_JSON_VALUE)
    public void update(@RequestBody enduser enduser){
        enduserRepository.save(enduser);
    }
    
    @RequestMapping(value = "/deleteuser/{id}",method=RequestMethod.GET)
    public String delete(@PathVariable String id){
        enduserRepository.delete(id);
        return "1";
    }
    
    @RequestMapping(value = "/signin/{username}",method=RequestMethod.GET)
    public enduser login(@PathVariable String username){
         
        System.out.println(username);
         
        username="maged";
        
        Query query=new Query();
        
        enduser user=mongoOperations.
                findOne(
                        query.addCriteria(
                                Criteria.where("username")
                                        .is(username)),enduser.class);
        
        System.out.println("enduser is "+user.getUsername());
        return user;
    }
}

null指针异常

未定义的2017-10-03 13:24:11.353错误5668 --- [IO-8080-EXEC-10]o.a.c.c.c.c。[。[。[/]。在路径上[][请求处理失败;嵌套异常是java.lang.nullpoInterException]带有根本原因

java.lang.nullpointerexception:null atcom.adams.demo.restcontroller.enduserrestcountroller.login(enduserrestcountroller.java:84)〜[class/:na]

看起来好像您缺少@Autowired的杂货注释:

@Autowired
enduserRepository enduserRepository;
@Autowired
MongoOperations mongoOperations;

您还应该尝试将逻辑与您的控制器和用户Java命名惯例分开。

您可以在这里找到一个工作示例:

mongo enduser示例

下载分支并在您的命令行中执行gradle bootRun。然后,您可以在浏览器中导航到http://localhost:8080/enduser/adduser/test以创建演示用户

和http://localhost:8080/enduser/signin/test以测试您的方法。

该答案的项目相关类是:

  • enduser
  • EnduserService
  • enduserController

最新更新