SpringBoot 整合 MongoDB 之 MongoTemplate 实现 CRUD、分页接口
发布日期:2021-06-30 16:50:45 浏览次数:3 分类:技术文章

本文共 4163 字,大约阅读时间需要 13 分钟。

一、前言

最近 ITAEM 团队的一个前端女生使用了 node+MongoDB 做了一个视频网站,效果相当不错,这勾起了笔者尘封已久的 MongoDB 记忆,于是结合目前最为流行的后台框架 SpringBoot,做了一个一般项目常用后台的接口 CRUD 操作

1、基础

2、参考
② 《SpringBoot2 精髓》李家智

二、代码

talk is cheap show me the code

1、代码结构

这里写图片描述

2、实体

package com.cun.entity;import org.springframework.data.annotation.Id;import org.springframework.data.mongodb.core.mapping.Document;import org.springframework.data.mongodb.core.mapping.Field;/** * 实体层 * @author linhongcun * */@Document(collection="t_user")public class User {
@Id // 指定ID private String id; @Field("userName") // 指定域名,覆盖默认 private String userName; @Field("password") // 指定域名,覆盖默认 private String password; public String getId() {
return id; } public void setId(String id) {
this.id = id; } public String getUserName() {
return userName; } public void setUserName(String userName) {
this.userName = userName; } public String getPassword() {
return password; } public void setPassword(String password) {
this.password = password; }}

3、控制层

package com.cun.controller;import java.util.HashMap;import java.util.List;import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.mongodb.core.MongoTemplate;import org.springframework.data.mongodb.core.query.Criteria; //这个包最容易导错import org.springframework.data.mongodb.core.query.Query;import org.springframework.web.bind.annotation.DeleteMapping;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.PutMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import com.cun.entity.User;import springfox.documentation.swagger2.annotations.EnableSwagger2;/** * 控制层 * @author linhongcun * */@RestController@RequestMapping("/user")@EnableSwagger2public class UserController {
@Autowired MongoTemplate mongoTemplate; /** * 1、增 * @param user * @return */ @PostMapping("/insert") public User insertUser(User user) {
// 可以用 save 替代 mongoTemplate.insert(user); return user; } /** * 2、查 * @param id * @return */ @GetMapping("/get/{id}") public User getUserById(@PathVariable String id) {
return mongoTemplate.findById(id, User.class); } /** * 3、删 * @param id * @return */ @DeleteMapping("/delete/{id}") public User deleteUserById(@PathVariable String id) {
User user = mongoTemplate.findById(id, User.class); mongoTemplate.remove(user); return user; } /** * 4、改 * @param user * @return */ @PutMapping("/update") public User updateUser(User user) {
// save 可增可改! mongoTemplate.save(user); return user; } /** * 5、全 * @return */ @GetMapping("/get/all") public List
getAllUsers() {
return mongoTemplate.findAll(User.class); } /** * 6、查 ++:属性、分页 * @param user * @param page * @param size * @return */ @GetMapping("/select/{page}/{size}") public Map
selectUserByProperty(User user, @PathVariable int page, @PathVariable int size) {
// 条件 Criteria criteria1 = Criteria.where("userName").is(user.getUserName()); Criteria criteria2 = Criteria.where("password").is(user.getPassword()); Query query = new Query(); if (user.getUserName() != null) {
query.addCriteria(criteria1); } if (user.getPassword() != null) {
query.addCriteria(criteria2); } // 数量 long total = mongoTemplate.count(query, User.class); // 分页 query.skip((page - 1) * size).limit(size); List
data = mongoTemplate.find(query, User.class); Map
map = new HashMap
(); map.put("data", data); map.put("total", total); return map; }}

4、yml

server:  context-path: /  port: 80spring:  data:    mongodb:      uri: mongodb://120.79.197.131:27018/test  #编码自动为UTF-8,没有中文乱码!

5、pom

这里写图片描述

还有 Swagger 依赖

io.springfox
springfox-swagger2
2.7.0
io.springfox
springfox-swagger-ui
2.6.1

三、效果

Swagger测试页面:

这里写图片描述

可以大胆地进行测试,接口均测试过,都是没有问题的

转载地址:https://larger5.blog.csdn.net/article/details/79760317 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:[增删改查] SpringBoot 整合 Solr 之 SolrClient 实现 CRUD、分页接口、高亮显示
下一篇:SpringBoot 结合 JSR303 对前端数据进行校验

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月28日 06时12分32秒