当前位置: 首页 > news >正文

SpringBoot接入mongodb例子,并有增删改查功能

1,首先,在pom.xml中添加依赖:

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency><!--上面这个依赖包含了Spring Data MongoDB的所有必要组件,下面是Springboot的start--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>

2,在 application.properties 或 application.yml 中配置MongoDB连接:

spring.data.mongodb.uri=mongodb://username:password@localhost:27017/my_database

3,然后,例如创建一个实体类User:

该实体类是映射MongoDB集合中的文档。
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;@Document
public class User {@Idprivate String id;private String name;private String deptName;private int age;private int salary;private int pageNum;private int pageSize;// 省略构造器、getter和setter方法
}

4,创建一个UserRepository接口:

使用Spring Data MongoDB提供的Repository接口来操作MongoDB,
这个接口继承自MongoRepository,它提供了基本的CRUD操作;
import org.springframework.data.mongodb.repository.MongoRepository;public interface UserRepository extends MongoRepository<User, String> {// 这里MongoRepository提供了基本的CRUD方法,也可以自定义查询方法}

5,创建一个UserService服务类: 

该服务类来调用Repository接口,
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;
import java.util.Optional;@Service
public class UserService {@Autowiredprivate UserRepository userRepository;@Autowiredprivate MongoTemplate mongoTemplate;// 新增public User saveUser(User user) {// 单个新增mongoTemplate.save(user);// 批量插入// List<User> users = new ArrayList<>();// users.add(...);// mongoTemplate.save(users, User.class);}// 精确查询public Optional<User> getUserById(String id) {return mongoTemplate.findById(id);}// 模糊查询public Optional<User> getUserByCondition(String name) {String param = (null == name) ? "" : name.trim();Criteria criteria = Criteria.where("name").regex(".*" + param + ".*");/** 上面正则匹配包含param的情况,下面是匹配以param为开头的情况*///Criteria criteria = Criteria.where("name").regex("^" + param);Query query = new Query(criteria);List<User> result = mongoTemplate.find(query, User.class);		return result;}// 模糊分页并排序查询public Optional<User> getUserByCondition(User user) {// 创建各种查询条件Criteria criteria = new Criteria().andOperator(Criteria.where("age").gte(40),Criteria.where("salary").gt(500)).orOperator(Criteria.where("name").regex("a"),Criteria.where("name").regex("b"));// 创建查询对象Query query = new Query(criteria);// 并指定排序方式query.with(Sort.by(Sort.Order.desc("age"),Sort.Order.asc("name")))// 分页处理.skip(pageNum*pageSize).limit(pageSize);			List<User> result = mongoTemplate.find(query, User.class);		return result;}// 全部查询public List<User> getAllUsers() {return userRepository.findAll();}// 精确更新操作public void update(User user) {if (null == user) {return;}Criteria criteria = Criteria.where("id").is(user.getId());Query query = new Query(criteria);Update updateObj = new Update().set("age", user.getAge());mongoTemplate.updateFirst(query, updateObj, User.class);}// 批量更新操作public void update(User user) {if (null == user) {return;}Criteria criteria = Criteria.where("salary").gt(300);Query query = new Query(criteria);Update updateObj = new Update().set("salary", 600).set("deptName", "工程部");// 仅更新第一条mongoTemplate.updateFirst(query, updateObj, User.class);// 全部更新mongoTemplate.updateMulti(query, updateObj, User.class);}// 删除public void deleteUserById(String id) {Criteria criteria = Criteria.where("id").is(id);  Query query = new Query(criteria);mongoTemplate.remove(query,User.class);}
}

6,再创建一个UserController控制器类来处理HTTP请求:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;
import java.util.Optional;@RestController
@RequestMapping("/users")
public class UserController {@Autowiredprivate UserService userService;@PostMappingpublic User addUser(@RequestBody User user) {return userService.saveUser(user);}@GetMapping("/{id}")public Optional<User> getUserById(@PathVariable("id") String id) {return userService.getUserById(id);}@GetMappingpublic List<User> getAllUsers() {return userService.getAllUsers();}@DeleteMapping("/{id}")public void deleteUserById(@PathVariable("id") String id) {userService.deleteUserById(id);}
}

7,创建一个启动类SpringBootDemoApplication:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class SpringBootDemoApplication {public static void main(String[] args) {SpringApplication.run(SpringBootDemoApplication.class, args);}
}

一个简单例子,欢迎拍砖讨论...

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 四、GD32 MCU 常见外设介绍 (5) TIMER 模块介绍
  • Vue中的diff算法
  • 华为嵌入式面试题及参考答案(持续更新)
  • PyTorch 中的一个函数:torch.pow
  • 完美捕捉趋势!立足市场必备“指数通行红绿灯”!股票量化分析工具QTYX-V2.8.7...
  • 数据库(MySQL)-视图、存储过程、触发器
  • WPF MVVM框架:CommunityToolkit.Mvvm包使用介绍
  • 【Python】sqlite加密库pysqlcipher3编译安装步骤
  • C#/WinFrom TCP通信+ 网线插拔检测+客服端异常掉线检测
  • Linux中,MySQL的用户管理
  • 集合的面试题和五种集合的详细讲解
  • 小猪佩奇.js
  • C++图网结构算法
  • C 语言动态顺序表
  • linux系统常用命令(个人使用)
  • CEF与代理
  • leetcode讲解--894. All Possible Full Binary Trees
  • MySQL QA
  • orm2 中文文档 3.1 模型属性
  • rabbitmq延迟消息示例
  • vue总结
  • WePY 在小程序性能调优上做出的探究
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 排序(1):冒泡排序
  • 我建了一个叫Hello World的项目
  • 异常机制详解
  • 用jquery写贪吃蛇
  • 从如何停掉 Promise 链说起
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​【经验分享】微机原理、指令判断、判断指令是否正确判断指令是否正确​
  • ​io --- 处理流的核心工具​
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (Java)【深基9.例1】选举学生会
  • (SpringBoot)第二章:Spring创建和使用
  • (TOJ2804)Even? Odd?
  • (超详细)语音信号处理之特征提取
  • (接口封装)
  • (力扣)1314.矩阵区域和
  • (实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee
  • (算法)N皇后问题
  • (一)插入排序
  • (转)c++ std::pair 与 std::make
  • .NET : 在VS2008中计算代码度量值
  • .NET gRPC 和RESTful简单对比
  • .net web项目 调用webService
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .Net多线程总结
  • .net开发时的诡异问题,button的onclick事件无效
  • //usr/lib/libgdal.so.20:对‘sqlite3_column_table_name’未定义的引用
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • @AliasFor 使用
  • @Async注解的坑,小心
  • @EventListener注解使用说明
  • @GetMapping和@RequestMapping的区别