我使用带有mongoose的springboot来创建一个宁静的web服务。注意 - 这是MAVEN项目
这是我的Controller类:
package controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import model.User;
import service.UserService;
@RestController
@RequestMapping("/users")
public class UserServiceController {
@Autowired
private UserService userService;
@RequestMapping(method = RequestMethod.POST)
public User createUser(@RequestBody User user) {
return userService.createUser(user);
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
public User updateUser(@PathVariable String id, @RequestBody User user) {
return userService.updateUser(id, user);
}
@RequestMapping(method = RequestMethod.GET)
public List < User > listUsers() {
return userService.listUsers();
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public User getUser(@PathVariable String id) {
return userService.getUser(id);
}
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
public User deleteUser(@PathVariable String id) {
return userService.deleteUser(id);
}
}
下面是我定义User的 Model类
package model;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "users")
public class User {
@Id
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
我定义了UserService Interface来分离控制器可以访问的方法。我还在UserServiceImpl类中实现了UserService接口。
UserService:
package service;
import java.util.List;
import model.User;
public interface UserService {
User createUser(User user);
User updateUser(String id, User user);
User deleteUser(String id);
User getUser(String id);
List < User > listUsers();
}
UserServiceImpl:
package service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import model.User;
import repository.UserRepository;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserRepository userRepository;
@SuppressWarnings("finally")
private User findOne(String Id) {
User instance = null;
try {
List < User > userList = userRepository.findAll();
for (User user: userList) {
if (user.getId().equals(Id)) {
instance = user;
break;
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
return instance;
}
}
@Override
public User createUser(User user) {
return userRepository.save(user);
}
@Override
public List < User > listUsers() {
return userRepository.findAll();
}
@Override
public User updateUser(String id, User user) {
User updateInstance = this.findOne(id);
updateInstance.setName(user.getName());
return userRepository.save(updateInstance);
}
@Override
public User deleteUser(String id) {
User instance = findOne(id);
userRepository.delete(instance);
return instance;
}
@Override
public User getUser(String id) {
return this.findOne(id);
}
}
最后我使用MongoRepository连接数据库。这是UserRepository:
package repository;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;
import model.User;
@Repository
public interface UserRepository extends MongoRepository < User, String > {
}
目录结构:
我的问题与UserServiceImpl中的代码一样,我手动实现了findOne方法。但我知道有一些构建方法,比如findOne和findById来获取实例。有没有办法可以将它们与MongoRepository一起使用而不是手动定义它们?
发布于 2018-12-08 06:05:37
接口MongRepository<T, ID>
已经内置了此方法。如果您使用的是Spring Boot Version 2.0.X,则会调用该方法.findById(String)
与Optional<User>
在您的情况下返回。您的服务可能如下所示:
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public User findOneById(String id) {
return userRepository.findById(id).get();
}
}
https://stackoverflow.com/questions/-100003030
复制相似问题