邢台网站建设哪家专业,西安网站建设g,sqlite做网站,51CTO学院个人网站开发视频传送门#xff1a;
MongoDB文档--基本概念_一单成的博客-CSDN博客
MongoDB文档--基本安装-linux安装#xff08;mongodb环境搭建#xff09;-docker安装#xff08;挂载数据卷#xff09;-以及详细版本对比_一单成的博客-CSDN博客
MongoDB文档--基本安装-linux安装
MongoDB文档--基本概念_一单成的博客-CSDN博客
MongoDB文档--基本安装-linux安装mongodb环境搭建-docker安装挂载数据卷-以及详细版本对比_一单成的博客-CSDN博客
MongoDB文档--基本安装-linux安装mongodb环境搭建-docker安装挂载数据卷-以及详细版本对比_一单成的博客-CSDN博客
MongoDB文档-基础使用-在客户端dos窗口/可视化工具中使用MongoDB基础语句_一单成的博客-CSDN博客
MongoDB文档-进阶使用-MongoDB索引-createindex()与dropindex()-在MongoDB中使用正则表达式来查找_一单成的博客-CSDN博客 使用技术介绍 概念说明 spring-data-mongodb 提供 MongoTemplate 与 MongoRepository两种操作方式 MongoRepository 操作简单 缺点是不够灵活 MongoTemplate 操作灵活在项目中可以灵活使用这两种方式
MongoTemplate MongoTemplate是Spring Data MongoDB项目的一部分它是一个Spring的扩展为使用MongoDB数据库的应用程序提供了抽象层。MongoTemplate提供了一个简单而强大的方法来执行各种数据库操作而无需编写低级别的MongoDB驱动程序代码。
MongoTemplate的主要功能包括
插入和更新文档MongoTemplate提供了一种方便的方法来插入和更新MongoDB数据库中的文档。 查询文档MongoTemplate提供了多种查询方法可以使用各种查询参数来检索数据库中的文档包括查询条件、排序、限制和投影。 聚合操作MongoTemplate支持聚合框架可以执行复杂的聚合操作如计数、分组、求和等。 索引管理MongoTemplate可以创建、删除和查询数据库索引。 命令和操作MongoTemplate还支持各种数据库命令和操作如计算数据库统计信息、执行存储过程等。 使用MongoTemplate可以简化MongoDB数据库操作的开发工作提供更高的生产力和更好的可维护性。
MongoRepository MongoRepository是Spring Data MongoDB项目中的另一个抽象层它是基于MongoTemplate的更高级别的抽象。MongoRepository提供了一个基于注解的接口用于定义与MongoDB数据库的交互。通过使用MongoRepository你可以专注于定义数据访问逻辑而无需编写低级别的数据库操作代码。
MongoRepository的主要功能包括
查询文档MongoRepository提供了一种方便的方法来查询数据库中的文档。通过使用注解你可以定义查询条件、排序、限制和投影。 聚合操作MongoRepository支持聚合框架可以执行复杂的聚合操作如计数、分组、求和等。 分页查询MongoRepository提供了分页查询功能可以限制查询结果的数量并获取下一页的结果。 自定义查询如果你需要执行更复杂的查询操作MongoRepository还提供了自定义查询的方法可以编写存储过程或使用MongoDB的查询语言执行自定义查询。 使用MongoRepository可以使你的代码更加简洁和可维护因为它提供了一种声明式的方式来访问MongoDB数据库。通过注解和自动实现的接口你可以专注于实现业务逻辑而无需关心底层的数据库操作细节。
使用MongoTemplate完成简单增删改查 常用方法
mongoTemplate.findAll(User.class): 查询User文档的全部数据
mongoTemplate.findById(id, User.class): 查询User文档id为id的数据
mongoTemplate.find(query, User.class);: 根据query内的查询条件查询
mongoTemplate.upsert(query, update, User.class): 修改
mongoTemplate.remove(query, User.class): 删除
mongoTemplate.insert(User): 新增
Query对象
1、创建一个query对象用来封装所有条件对象)再创建一个criteria对象用来构建条件
2、 精准条件criteria.and(“key”).is(“条件”)
模糊条件criteria.and(“key”).regex(“条件”)
3、封装条件query.addCriteria(criteria)
4、大于创建新的criteriaCriteria gt Criteria.where(“key”).gt“条件”
小于创建新的criteriaCriteria lt Criteria.where(“key”).lt“条件”
5、Query.addCriteria(new Criteria().andOperator(gt,lt));
6、一个query中只能有一个andOperator()。其参数也可以是Criteria数组。
7、排序 query.withnew Sort(Sort.Direction.ASC, age). and(new Sort(Sort.Direction.DESC, date)))
阿丹 使用MongoDB中的MongoTemplate来完成的好处就是可以自己构造Query所以在操作的时候更加的灵活在加上底层的一些封装。更加的易读易学。 1、引入依赖
使用MongoDB的专属依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-mongodb/artifactId/dependency 这个依赖是Spring Boot提供的用于与MongoDB数据库进行交互的starter依赖。它包含了所需的库和依赖项以便在使用Spring Boot开发应用程序时方便地使用MongoDB。
具体来说这个依赖提供了以下功能
自动配置Spring Boot会自动配置与MongoDB数据库的连接包括创建Mongo客户端、设置连接属性等。 MongoTemplate自动配置了MongoTemplate这是一个用于执行各种数据库操作的核心类。通过使用MongoTemplate你可以方便地进行文档的插入、更新、查询等操作。 MongoRepository自动配置了MongoRepository这是一个基于注解的接口用于定义与MongoDB数据库的交互。通过继承MongoRepository你可以方便地进行查询、聚合操作等。 模板化操作通过使用MongoTemplate和MongoRepository你可以以模板化的方式执行数据库操作这使得代码更加简洁、可读性更好。 总之通过添加这个依赖可以方便地使用Spring Boot与MongoDB进行集成而无需手动配置和编写低级别的数据库操作代码。
其他依赖如果小伙伴想直接开启一个简单的spring-boot项目可直接拿走
dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-mongodb/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-tomcat/artifactIdscopeprovided/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scopeexclusionsexclusiongroupIdorg.junit.vintage/groupIdartifactIdjunit-vintage-engine/artifactId/exclusion/exclusions/dependency/dependencies
2、书写配置文件建立连接
书写applicaton.yml文件
spring:data:mongodb:host: 127.0.0.1 #指定MongoDB服务地址port: 27017 #指定端口默认就为27017database: article#指定使用的数据库(集合)authentication-database: admin # 登录认证的逻辑库名username: #用户名password: #密码
注意 如果没有设置连接的用户的话可以根据实际情况删除一部分配置文件。 相对于MySQL不一样的是在MySQL中一个用户可以管理多个数据库但是MongoDB每个库都要一个独立的管理用户连接的时候需要输入对应的用户密码。 3、实体类展示
主要注解 1、Document,对应MongoDB中的文档也就是数据库中的最基本的数据单元由键值对组成类似于JSON格式可以存储不同字段字段的值可以包括其他文档数组和文档数组。 2、Id主键用来将成员变量的值映射为文档的_id的值可以看我之前的文档有讲到如何给_id赋值。 3、Index索引索引是一种特殊的数据结构存储在一个易于遍历读取的数据集合中能够对数据文档中的数据进行排序。索引可以大大提高文档查询效率。 4、Field字段文档中的字段类似于MySQL中的列概念。 5、Aggregation聚合聚合主要用于数据处理例如统计平均值、求和等。 展示
package com.example.mongodb_learn2.common;import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;/*** 阿丹实体类* */
Data
Document(collection ExampleDB)
public class Adn {IdField(_id)private Long id;//阿丹主键Field(name)private String name;//阿丹名称Field(gender)private String gender;//阿丹性别Field(specialty)private String specialty;//特长描述
}注意: 一定要去写Field(name)这个注解映射到字段的名字不然查到的都是空
4、上代码!正删改查开始
controller控制层
package com.example.mongodb_learn2.controller;import com.example.mongodb_learn2.common.Adn;
import com.example.mongodb_learn2.service.AdnService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;RestController
public class AdnController {Autowiredprivate AdnService adnService;/*** 根据id进行查找* */GetMapping(/adnByid/{id})public Adn getAdn(PathVariable String id) {return adnService.getAdn(id);}/***添加阿丹* */PostMapping(/saveAdn)public String saveAdn(RequestBody Adn adn) {return adnService.saveAdn(adn);}/***根据id删除*/GetMapping(/deleteAdn/{id})public String deleteAdn(PathVariable String id) {return adnService.deleteAdn(id);}/*** 修改* */PostMapping(/updateAdn)public String updateAdn(RequestBody Adn adn) {return adnService.updateAdn(adn);}/*** 查找所有展示列表* */GetMapping(/getAllAdn)public ListAdn getAllAdn() {return adnService.getAllAdn();}}service层接口
package com.example.mongodb_learn2.service;import com.example.mongodb_learn2.common.Adn;import java.util.List;public interface AdnService {Adn getAdn(String id);String saveAdn(Adn adn);String deleteAdn(String id);String updateAdn(Adn adn);ListAdn getAllAdn();
}
service层实现类
package com.example.mongodb_learn2.service.Impl;import com.alibaba.fastjson.JSON;
import com.example.mongodb_learn2.common.Adn;
import com.example.mongodb_learn2.service.AdnService;
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.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;import java.util.List;Service
public class AdnServiceImpl implements AdnService {Autowiredprivate MongoTemplate mongoTemplate;Overridepublic Adn getAdn(String id) {return mongoTemplate.findById(id, Adn.class);}Overridepublic String saveAdn(Adn adn) {Adn save mongoTemplate.save(adn);return JSON.toJSONString(save);}Overridepublic String deleteAdn(String id) {Query query new Query();query.addCriteria(Criteria.where(id).is(id));mongoTemplate.remove(query, Adn.class);return id;}Overridepublic String updateAdn(Adn adn) {Query query new Query();query.addCriteria(Criteria.where(id).is(adn.getId()));Update update new Update();update.set(name, adn.getName());update.set(gender, adn.getGender());update.set(specialty, adn.getSpecialty());mongoTemplate.updateFirst(query,update,Adn.class);Long id adn.getId();return id;}Overridepublic ListAdn getAllAdn() {return mongoTemplate.findAll(Adn.class);}
}可以看到使用MongoTemplate的优势就是更加的灵活。可以自定义化。