( 十三 )、 SpringBoot 整合 MongoDB
( 十三 )、 SpringBoot 整合 MongoDB
官网: https://docs.spring.io/spring-data/mongodb/docs/3.2.5/reference/html/#mongodb-getting-started
1、Maven 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
2、Yml
spring:
#mongodb配置
data:
mongodb:
# uri: mongodb://admin:admin@127.0.0.1:27017/admin
uri: mongodb://127.0.0.1:27017/dw
方式一:MongoRepository
1、User
@Data
public class User {
@Id
private String userId;
private String name;
private Integer age;
private Date createTime = new Date();
}
2、IUserRepository
/**
* @Author dw
* @ClassName UserRepository
* @Description 方式一 : 继承 MongoRepository<实体类, 主键ID>
* @Date 2021/10/25 10:12
* @Version 1.0
*/
@Repository
public interface IUserRepository extends MongoRepository<User, String> {
}
3、controller
/**
* @Author dw
* @ClassName UserController
* @Description 方式一 : MongoRepository
* @Date 2021/10/25 10:16
* @Version 1.0
*/
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private IUserRepository userRepository;
@GetMapping("getAll")
public List<User> getAllUsers() {
return userRepository.findAll();
}
@GetMapping("/{userId}")
public User getByUserId(@PathVariable String userId) {
return userRepository.findById(userId).orElse(new User());
}
@PostMapping("addNewUser")
public User addNewUser(@RequestBody User user) {
return userRepository.save(user);
}
@DeleteMapping("/{userId}")
public String delete(@PathVariable String userId) {
User user = new User();
user.setUserId(userId);
userRepository.deleteById(userId);
return "deleted: " + userId;
}
@PutMapping("update")
public User update(@RequestBody User user) {
return userRepository.save(user);
}
}
方式二: MongoTemplate
/**
* @Author dw
* @ClassName UserTemplateController
* @Description 方式二: MongoTemplate
* @Date 2021/10/25 11:28
* @Version 1.0
*/
@RestController
@RequestMapping("/user")
public class UserTemplateController {
@Autowired
private MongoTemplate template;
@RequestMapping("/findAll")
public List<User> findAll() {
return template.findAll(User.class);
}
@RequestMapping("/findById")
public User findById(String userId) {
return template.findById(userId,User.class);
}
@RequestMapping("/save")
public User save(User user) {
return template.save(user);
}
@RequestMapping("/deleteById")
public void deleteById(String userId) {
Query query = new Query();
query.addCriteria(Criteria.where("userId").is(userId));
template.remove(query, User.class);
}
}