当前位置: 首页 > 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);}
}

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

http://www.lryc.cn/news/406656.html

相关文章:

  • 类和对象(三)
  • Android SurfaceFlinger——GraphicBuffer初始化(二十九)
  • pytest:4种方法实现 - 重复执行用例 - 展示迭代次数
  • 一文入门SpringSecurity 5
  • IPython的HTML魔法:%%html_header命令全解析
  • 将SQL中的占位符替换成参数
  • 锁相环 vivado FPGA
  • 英语科技写作 希拉里·格拉斯曼-蒂(英文版)pdf下载
  • 《Dynamic Statistical Learning in Massive Datastreams》论文阅读笔记
  • 【数据分享】2008-2022年我国省市县三级的逐日NO2数据(excel\shp格式)
  • JavaEE (1)
  • 事务、函数和索引
  • Android APP 基于RecyclerView框架工程(知识体系积累)
  • 【iOS】GCD
  • C语言 | Leetcode C语言题解之第282题给表达式添加运算符
  • 如何使用 API list 极狐GitLab 容器镜像仓库中的 tag?
  • 粒子群算法PSO优化BP神经网络(PSO-BP)回归预测——Python和MATLAB实现
  • React-router路由配置及跳转
  • vue3【实战】可编辑的脱敏信息
  • S71200 - 笔记
  • linux系统查历史cpu使用数据(使用sar 查询cpu和网络占用最近1个月历史数据)。
  • Edge浏览器加载ActiveX控件
  • BUG与测试用例设计
  • 怎么在使用select2时,覆盖layui的下拉框样式
  • MacOSM1 配置Miniconda环境,并设置自启动
  • poi库简单使用(java如何实现动态替换模板Word内容)
  • 机器人开源调度系统OpenTcs6二开-车辆表定义
  • 麦歌恩MT6521-第三代汽车磁性角度传感器芯片
  • 【数据结构】堆,优先级队列
  • 2024 暑假友谊赛 2