1. 程式人生 > >第七章:springboot整合MongoDB

第七章:springboot整合MongoDB

本篇博文主要講述入使用springboot對MongoDB進行整合

這裡我們需要先安裝配置MongoDB。在官網下載會比較慢,(反正我是比較慢啦,不知道各位的了)所以我特意提供了一下我下載好的安裝包,以及補丁,還有一個視覺化工具。地址在下方,有需要的可以前往下載。

此處說明一下,因為每個人的電腦環境電腦系統不一致,可能配置可以適當的縮減,就拿我來說,我在公司安裝好後需要打補丁才可以使用,但是我在家裡自己的電腦上安裝就可以直接使用,不需要補丁。請根據實際情況進行安裝配置。

準備工作:

  • 安裝MongoDB
  • jdk1.8+
  • Maven3.0+
  • idea

建立工程:

我們已經建立了許多次工程了,這裡就不在贅述了,如果剛接觸的新手朋友可以參考:

springboot入門體驗

引入相關的依賴,以下是我的完整依賴:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.wujie</groupId>
    <artifactId>springboot-mongodb</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>springboot-mongodb</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

需要加入spring-boot-starter-data-mongodb依賴。

接下來就是配置資料來源:

spring:
  data:
    mongodb:
      uri: mongodb://localhost:27017/mydb
server:
  port: 80

如果有安全認證的地址應該這樣寫:mongodb://name:[email protected]:27017/mydb

不過我個人建議新接觸的朋友們最後先不要進行安全認證。

定義一個實體:

public class Student {
    /**
     * id
     */
    @Id
    private String id;
    /**
     * 姓名
     */
    private String name;
    /**
     * 性別
     */
    private String sex;

    public Student(String name, String sex) {
        this.name = name;
        this.sex = sex;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                '}';
    }
}

新建dao層對資料操作:

寫一個介面,繼承MongoRepository,這個介面有了基本的CRUD的操作,當不能滿足需求的時候,可以進行一些自定的方法,比如查詢,findByName根據名字查詢,findBySex,根據性別查詢,在springboot中,我們只需要定義一個方法即可,springboot已經幫我們實現了。注意的是findByName需要嚴格的按照存入的MongoDB的欄位對應。

public interface StudentRepository extends MongoRepository<Student,String> {
    public Student findByName(String name);
    public List<Student> findBySex(String sex);
}

新建service層:


public interface StudentService {
    public Student add (Student student);
    public UpdateResult update (Student student);
    public void delete(String id);
    public Student findByName(String name);
    public List<Student> findBySex(String sex);
}

新建service層的實現類:

@Service
public class StudentServiceImpl implements StudentService {
    @Autowired
    private StudentRepository studentRepository;
    @Autowired
    private MongoTemplate mongoTemplate;
    @Override
    public Student add(Student student) {
        Student student1 = studentRepository.save(student);
        return student1;
    }

    @Override
    public UpdateResult update(Student student) {
        Query query = new Query();
        Criteria criteria = new Criteria();
        query.addCriteria(Criteria.where("_id").is(student.getId()));
        String collectionsName = "student";
        Update update = new Update();
        update.set("_id",student.getId());
        UpdateResult result = mongoTemplate.updateFirst(query, update, collectionsName);
        return result;
    }

    @Override
    public void delete(String id) {
        studentRepository.deleteById(id);
    }

    @Override
    public Student findByName(String name) {
       return studentRepository.findByName(name);
    }

    @Override
    public List<Student> findBySex(String sex) {
        return studentRepository.findBySex(sex);
    }
}

新建controller:

@RestController
@RequestMapping("student")
public class StudentController {
    @Autowired
    private StudentService studentService;
    @RequestMapping("add")
    public Student add(Student student){
        return  studentService.add(student);
    }
    @RequestMapping("update")
    public UpdateResult update(Student student){
        return studentService.update(student);
    }

    @RequestMapping("findByName")
    public Student findByName(String name){
        return studentService.findByName(name);
    }
    @RequestMapping("findBySex" )
    public List<Student> findBySex(String sex){
        return studentService.findBySex(sex);
    }

    @RequestMapping("delete")
    public String delete(String id){
        studentService.delete(id);
        return "success";
    }


}

即可得到如下的結果:

以上的介面都已經經過測試。

歡迎關注我的公眾號我們一起學習:

相關推薦

springboot整合MongoDB

本篇博文主要講述入使用springboot對MongoDB進行整合 這裡我們需要先安裝配置MongoDB。在官網下載會比較慢,(反正我是比較慢啦,不知道各位的了)所以我特意提供了一下我下載好的安裝包,以及補丁,還有一個視覺化工具。地址在下方,有需要的可以前往下載。 此

轉載SpringBoot非官方教程 | 八篇springboot整合mongodb

這篇文章主要介紹springboot如何整合mongodb。 準備工作 jdk 1.8 maven 3.0 idea 環境依賴 在pom檔案引入spring-boot-starter-data-mongodb依賴: <dependency>

SpringBoot整合JavaMail傳送郵件

簡單介紹 JavaMail是SUN公司提供給廣大Java開發人員的一款郵件傳送和接收的開源類庫,支援常用的郵件協議,如:SMTP、POP3、IMAP,開發人員使用JavaMail編寫郵件程式時,不再需要考慮底層的通訊細節如:Socket,而是關注在邏輯層面。J

整合學習(利用AdaBoost元演算法...)

---恢復內容開始---   整合學習其實不能算一個演算法,應該算是一種框架,集百家之長。整合演算法具體有Bagging與Boosting兩種大類。兩者區別:   1)Bagging是並行的,它就好比找男朋友,美女選擇擇偶物件的時候,會問幾個閨蜜(幾個演算法)的建議,最後選擇一個綜合得分最高的一個作為男朋

SpringBoot | 搭建SpringBoot監控中心Actuator

(一)、什麼是Actuator        Actuator是spring boot的一個附加功能,可幫助你在應用程式生產環境時監視和管理應用程式。可以使用HTTP的各種請求來監管,審計,收集應用的執行情況。Spring Boot Actuator提

SpringBoot | 過濾器、監聽器、攔截器

前言 在實際開發過程中,經常會碰見一些比如系統啟動初始化資訊、統計線上人數、線上使用者數、過濾敏高詞彙、訪問許可權控制(URL級別)等業務需求。這些對於業務來說一般上是無關的,業務方是無需關係的,業務只需要關係自己內部業務的事情。所以一般上實現以上的功能,都會或多或少的

常用類

substr 獲取字符串 算術 java 基本數據類型轉換 float equals 表達式 seed 第七章:常用類 包裝類 java中有8中基本類型,對應有八種包裝類作用:包裝類中封裝了該類型常用的屬性和方法,以方便操作。byte---->Byteshort---

OpenGL藍寶書立體天空和紋理折射、雙紋理(下)

ever oot 可行性 VR char 都是 pipeline 差異 pac 對照了藍寶書,才知道紅寶書的長處。 reflect函數的原理在紅寶書中有說明,僅僅有

跨程序共享數據-探究內容提供器

打電話 動態 什麽 普通權限 明顯 ast 運行 狀態 用法 運行時權限 Android 6.0 之後的系統提供了兩種權限: 普通權限。例如:訪問網絡狀態、監控開機是否完成等。這種權限會在安裝 APP 時詢問用戶是否同意。 危險權限,也就是說運行時權限,需要在程序運行時動

Docker | Docker Compose服務編排介紹及使用

覆蓋 tin linu docs 使用 學習 events environ 操作系統 前言 前面章節,我們學習了如何構建自己的鏡像文件,如何保存自己的鏡像文件。大多都是一個鏡像啟動。當一個系統需要多個子系統進行配合時,若每個子系統也就是鏡像需要一個個手動啟動和停止的話,那

C#本質論6.0接口

派生 over 由於 轉型 face 逗號 接口類 明顯 value 接口: 概述: 接口能將實現細節和提供的服務完全隔離開。接口既不包括實現,也不包括數據。 接口實現:(待補) 要實現的接口和基類名稱以逗號分隔,基類在前,接口順序任意。類可實現多個接口,但只能從一個基類直

Introduction to 3D Game Programming with DirectX 12 學習筆記之 --- 在Direct3D中繪製(二)

程式碼工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes 學習目標 理解本章中針對命令佇列的更新(不再需要每幀都flush命令佇列),提高效能; 理解其他兩種型別的根訊號引數型別:根描述

小世界網路模型

第7章 小世界網路模型:本章將圍繞小世界網路模型展開,主要內容分為兩個部分:(1)如何構建具有較大的聚類特性又具有較短的平均距離的小世界網路模型?(2)什麼樣的小世界網路才能實現有效搜尋? 7.2小世界網路模型 7.2.1小世界網路模型完全規則最近耦合網路:高聚類:c=3(k-2)/4(k-1)>=

演算法導論 快速排序 筆記(快速排序的描述、快速排序的效能、快速排序的隨機化版本、快速排序分析)

快速排序的最壞情況時間複雜度為Θ(n^2)。雖然最壞情況時間複雜度很差,但是快速排序通常是實際排序應用中最好的選擇,因為它的平均效能很好。它的期望執行時間複雜度為Θ(n lg n),而且Θ(n lg n)中蘊含的常數因子非常小,而且它還是原址排序的。 快速排序是一種排序演算法,對包含n個數的

JavaScriptAjax

  Ajax的優勢在於:對於頁面的請求以非同步方式傳送到伺服器。而伺服器不會用整個頁面來響應請求,它會在後臺處理請求,與此同時使用者還能繼續瀏覽頁面並與頁面互動。你的指令碼則可以按需載入和建立頁面內容,而不會打斷使用者的瀏覽體驗。 1.XMLHttpRequest物件  

JavaScirpt重回圖片庫

  在過去的圖片庫HTML檔案中有一個圖片和文字是為了showPic指令碼服務的。若能將結構和行為徹底分開就最好不過。既然這些元素的存在是為了讓DOM方法處理它們,那麼用DOM方法建立它們才是最合適的選擇。 var placeholder=document.createElemen

JavaScript一些傳統方法

   過去我們常常由標記建立網頁結構,用JavaScript改變某些細節而非底層結構。這一章我們將要學習一些DOM方法,通過建立新元素和修改現有元素改變網頁結構。首先回顧過去使用的兩種技術document.write和innnerHTML。 1.document.write

(雲吶運維手冊)業主關聯服務商

企業互動功能是雲吶平臺特有功能,要讓企業互動功能發揮作用,首先需要通過企業認證,同時需要在平臺中建立起服務供需雙方的服務關係,開啟服務資訊互動的通道。 作為業主企業,我們首先需要羅列出目前為企業提供IT服務的服務商數量、企業名稱。然後再通過邀請註冊或其他線下方式讓服務商入駐雲吶平臺。 平臺的WE

6 使用springboot整合netty搭建後臺

我們不會去使用自增長的id,在現階段的網際網路開發過程中,自增長的id是已經不適用了。在未來隨著系統版本的迭代,使用者數量的遞增,肯定會做分庫分表,去做一些相應的切分。在這個時候我們就需要有一個唯一的id。專案裡面會有一個唯一id的外掛去使用。所有的主鍵id都會使用一個字串varchar。小頭像是預覽過程

資料庫系統概論(資料庫設計)

第七章:資料庫設計 7.1  資料庫設計概述  1、資料庫設計 (1)資料庫設計是指對於一個給定的應用環境,構造(設計)優化的資料庫邏輯模式和物理結構,並據此建立資料庫及其應用系統,使之能夠有效地儲存和管理資料,滿足各種使用者的應用需求,包括資訊管理要求和資料