试客网站建设,百度推广关键词多少合适,深圳市工程建设交易中心服务主页,服装网站开发方案一、系列文章目录
一、MongoDB安装教程—官方原版
二、MongoDB 使用教程(配置、管理、监控)_linux mongodb 监控
三、MongoDB 基于角色的访问控制
四、MongoDB用户管理
五、MongoDB基础知识详解
六、MongoDB—Indexs
七、MongoDB事务详解 八、MongoDB分片教程
九、Mo…一、系列文章目录
一、MongoDB安装教程—官方原版
二、MongoDB 使用教程(配置、管理、监控)_linux mongodb 监控
三、MongoDB 基于角色的访问控制
四、MongoDB用户管理
五、MongoDB基础知识详解
六、MongoDB—Indexs
七、MongoDB事务详解 八、MongoDB分片教程
九、MongoDB 操作CRUD 教程
十、MongoDB时间序列
十一、Spring连接到MongoDB的几种方法
十二、MongoDB可视化工具免费
十三、Spring MongoDB 开发教程一
十四、Spring MongoDB 开发教程二
十五、Spring Mongodb—MongoTemplate详解及示例代码
十六、MongoTemplate —保存、更新和删除文档
十七、Spring Boot 实战 MongoDB 实现批量写入 MongoDB 是一个基于 分布式文件存储 的开源 NoSQL 数据库系统由 C 编写的。MongoDB 提供了 面向文档 的存储方式操作起来比较简单和容易支持“无模式”的数据建模可以存储比较复杂的数据类型是一款非常流行的 文档类型数据库 。 在高负载的情况下MongoDB 天然支持水平扩展和高可用可以很方便地添加更多的节点/实例以保证服务性能和可用性。在许多场景下MongoDB 可以用于代替传统的关系型数据库或键/值存储方式皆在为 Web 应用提供可扩展的高可用高性能数据存储解决方案
二、SpringBoot整合MongoDB
1、添加MongoDB依赖
Spring Data MongDB 是Spring Data的下的一个模块在SpringBoot中整合MongoDB就需要添加Spring Data MongDB的依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-mongodb/artifactId
/dependency
2、配置文件 spring:data:mongodb:host: 192.168.136.160port:27017database:leousername:adminpassword:123456
3、实例代码
主要注解
Document文档是 MongoDB 中最基本的数据单元由键值对组成类似于 JSON 格式可以存储不同字段字段的值可以包括其他文档数组和文档数组。
Id主键用来将成员变量的值映射为文档的_id的值
Indexed索引 索引是一种特殊的数据结构存储在一个易于遍历读取的数据集合中能够对数据库文档中的数据进行排序。索引能极大提高文档查询效率如果没有设置索引MongoDB 会遍历集合中的整个文档选取符合查询条件的文档记录。这种查询效率是非常低的。
Field字段 文档中的字段类似于 MySql 中的列。
Aggregation聚合 聚合主要用于数据处理例如统计平均值、求和等。 import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;Document(collection Book)
public class Book {Idprivate String id;private String title;private String author;private String summary;public String getId() {return id;}public void setId(String id) {this.id id;}public String getTitle() {return title;}public void setTitle(String title) {this.title title;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author author;}public String getSummary() {return summary;}public void setSummary(String summary) {this.summary summary;}
}
SpringBoot操作MongoDB有两种方式分别是继承MongoRepository类和service注入MongoTemplate
MongoRepository方式
Repository是用于操作数据库的类 package com.palmer.rachelle.javaspringmongodb.repository;
import com.palmer.rachelle.javaspringmongodb.model.Book;
import org.springframework.data.mongodb.repository.MongoRepository;
import java.util.List;public interface BookRepository extends MongoRepositoryBook, String {ListBook findByTitleStartsWithOrAuthor(String title, String author);
}
Controller代码
import com.palmer.rachelle.javaspringmongodb.model.Book;
import com.palmer.rachelle.javaspringmongodb.repository.BookRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;import java.util.List;Controller
public class BookController {Autowiredprivate BookRepository bookRepository;/*** Handles listing of all books and searching.* param model* return*/GetMapping({/index, /search})public String showBooks(Model model, String keyword) {if (keyword ! null) {model.addAttribute(books,this.bookRepository.findByTitleStartsWithOrAuthor(keyword, keyword));model.addAttribute(keyword, keyword);} else {ListBook books this.bookRepository.findAll();model.addAttribute(books, books);}return index;}/*** Show form for adding a book document* param book* return*/GetMapping(/add-book)public String showAddBookForm(Book book) {return add-book;}/*** This will CREATE a books. C of CRUD.* param book* param result* param model* return*/PostMapping(/add-book)public String addBook(Book book, BindingResult result, Model model) {if (result.hasErrors()) {return add-book;}this.bookRepository.save(book);return redirect:/index;}/*** Show form for editing a book document. The R in CRUD.* param id* param model* return*/GetMapping(/edit-book/{id})public String showUpdateForm(PathVariable(id) String id, Model model) {Book book this.bookRepository.findById(id).orElseThrow(() - new IllegalArgumentException(Invalid book Id: id));model.addAttribute(book, book);return edit-book;}/*** This will update a book document. The U in CRUD* param id* param book* param result* param model* return*/PostMapping(/edit-book/{id})public String updateBook(PathVariable(id) String id, Book book, BindingResult result, Model model) {if (result.hasErrors()) {book.setId(id);return edit-book;}this.bookRepository.save(book);return redirect:/index;}/*** This will delete a book document. The D in CRUD.* param id* param model* return*/GetMapping(/delete-book/{id})public String deleteUser(PathVariable(id) String id, Model model) {Book book this.bookRepository.findById(id).orElseThrow(() - new IllegalArgumentException(Invalid book Id: id));this.bookRepository.delete(book);return redirect:/index;}
}
MongoTemplate实现方式
MongoTemplate是由org.springframework.data.mongodb.corepacket 提供一个Java类。它提供了一组用于与MongoDB交互的丰富特性并充当Spring的MongoDB支持的中心类。此外MongoTemplate是线程安全的可以跨多个实例调用。MongoTemplate类实现了接口MongoOperations提供了流畅的API进行Query Criteria Update等基本操作此外也支持泛型的方法实现。使用起来也非常方便可直接将MongoTemplate作为类中的属性来使用。
import java.util.List;/*** author * version 1.0* date 2022/12/17 15:33*/
public interface BookService {ListBook findAll();NewUser findById(String BookId);NewUser save(Book book);void deleteById(String BookId);
}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 java.util.List;public class BookServiceImpl implements BookService {Autowiredprivate MongoTemplate template;Overridepublic ListBook findAll() {return template.findAll(Book.class);}Overridepublic Book findById(String BookId) {return template.findById(BookId,Book.class);}Overridepublic Book save(Book book) {template.save(book);return book;}Overridepublic void deleteById(String BookId) {Query query new Query();query.addCriteria(Criteria.where(id).is(BookId));template.remove(query, Book.class);}
}RestController
RequestMapping(/book)
public class BookController {Autowiredprivate final BookService bookService;GetMapping()public ListBook getAllBooks() {return bookService.findAll();}GetMapping(/{userId})public Book getByBookId(PathVariable String bookId) {return bookService.findById(bookId);}PostMapping(/addNewBook)ResponseBodypublic Book addNewBook(RequestBody Book book) {return bookService.save(book);}DeleteMapping(/{bookId})public String delete(PathVariable String bookId) {Book book new Book();book.setId(bookId);bookService.deleteById(bookId);return deleted: bookId;}PutMapping()public Book update(RequestBody Book book) {return bookService.save(book);}
}