一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - SpringBoot整合之SpringBoot整合MongoDB的詳細(xì)步驟

SpringBoot整合之SpringBoot整合MongoDB的詳細(xì)步驟

2021-10-03 15:20張雷鋒 Java教程

這篇文章主要介紹了SpringBoot整合之SpringBoot整合MongoDB的詳細(xì)步驟,本文通過(guò)圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

MongoDB 是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。由 C++ 語(yǔ)言編寫(xiě)。旨在為 WEB 應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。

MongoDB 是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的。本文介紹SpringBoot整合之SpringBoot整合MongoDB的步驟。

一、創(chuàng)建項(xiàng)目,選擇依賴(lài)

僅選擇Spring Web、Spring Data MongoDB即可

SpringBoot整合之SpringBoot整合MongoDB的詳細(xì)步驟
SpringBoot整合之SpringBoot整合MongoDB的詳細(xì)步驟
SpringBoot整合之SpringBoot整合MongoDB的詳細(xì)步驟

二、引入相關(guān)依賴(lài)(非必要)

這里只是為了實(shí)體類(lèi)的創(chuàng)建方便而引入lombok

<!-- 引入lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

三、如果是第一次使用MongoDB,首先先創(chuàng)建用戶(hù)

> use admin
switched to db admin
> db.createUser({user:"zlfeng", pwd:"123456", roles:[{role:"readWriteAnyDatabase", db:"admin"}]});
Successfully added user: {
	"user" : "zlfeng",
	"roles" : [
		{
			"role" : "readWriteAnyDatabase",
			"db" : "admin"
		}
	]
}

MongoDB權(quán)限介紹

權(quán)限 說(shuō)明
read 允許用戶(hù)讀取指定數(shù)據(jù)庫(kù)
readWrite 允許用戶(hù)讀寫(xiě)指定數(shù)據(jù)庫(kù)
dbAdmin 允許用戶(hù)在指定數(shù)據(jù)庫(kù)中執(zhí)行管理函數(shù),如索引創(chuàng)建、刪除、查看統(tǒng)計(jì)或訪(fǎng)問(wèn)system.profile
userAdmin 允許用戶(hù)向system.users集合寫(xiě)入,可以在指定數(shù)據(jù)庫(kù)中創(chuàng)建、刪除和管理用戶(hù)
clusterAdmin 必須在admin數(shù)據(jù)庫(kù)中定義,賦予用戶(hù)所有分片和復(fù)制集相關(guān)函數(shù)的管理權(quán)限
readAnyDatabase 必須在admin數(shù)據(jù)庫(kù)中定義,賦予用戶(hù)所有數(shù)據(jù)庫(kù)的讀權(quán)限
readWriteAnyDatabase 必須在admin數(shù)據(jù)庫(kù)中定義,賦予用戶(hù)所有數(shù)據(jù)庫(kù)的讀寫(xiě)權(quán)限
userAdminAnyDatabase 必須在admin數(shù)據(jù)庫(kù)中定義,賦予用戶(hù)所有數(shù)據(jù)庫(kù)的userAdmin權(quán)限
dbAdminAnyDatabase 必須在admin數(shù)據(jù)庫(kù)中定義,賦予用戶(hù)所有數(shù)據(jù)庫(kù)的dbAdmin權(quán)限
root 必須在admin數(shù)據(jù)庫(kù)中定義,超級(jí)賬號(hào),超級(jí)權(quán)限

四、定義核心配置文件

# 登錄用戶(hù)所在的數(shù)據(jù)庫(kù)
spring.data.mongodb.authentication-database=admin

# 數(shù)據(jù)庫(kù)的ip地址
spring.data.mongodb.host=192.168.133.142

# MongoDB端口號(hào)
spring.data.mongodb.port=27017

# 用戶(hù)賬號(hào)
spring.data.mongodb.username=zlfeng

# 用戶(hù)密碼
spring.data.mongodb.password=123456

# 指定使用的數(shù)據(jù)庫(kù)
# 不必預(yù)先創(chuàng)建,不存在該數(shù)據(jù)庫(kù)會(huì)自動(dòng)創(chuàng)建
spring.data.mongodb.database=db_student

五、創(chuàng)建實(shí)體類(lèi)

package cn.byuan.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;

import java.io.Serializable;
import java.util.Date;

@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Data
public class Student implements Serializable {
    @Id// 必須指定id列
    private String studentId;

    private String studentName;

    private Integer studentAge;

    private Double studentScore;
    
    private Date studentBirthday;
}

六、創(chuàng)建dao層,這里的dao層有兩種寫(xiě)法

(一)dao層寫(xiě)法一

1. 編碼部分

package cn.byuan.dao;

import cn.byuan.entity.Student;
import org.springframework.data.mongodb.repository.MongoRepository;

/*
* dao層寫(xiě)法一
* 這里的用法其實(shí)和SpringDataJPA相似, 可根據(jù)需要來(lái)自定義方法
*
* 這種寫(xiě)法不需要寫(xiě)實(shí)現(xiàn)類(lèi)
*
* MongoRepository<行對(duì)應(yīng)的對(duì)象類(lèi)型, 主鍵列類(lèi)型>
* */
public interface StudentDaoTypeOne extends MongoRepository<Student, String> {
    
//    可根據(jù)需求自己定義方法, 無(wú)需對(duì)方法進(jìn)行實(shí)現(xiàn)
    Student getAllByStudentName(String studentName);
        
}

SpringBoot整合之SpringBoot整合MongoDB的詳細(xì)步驟

2.測(cè)試部分

在進(jìn)行測(cè)試之前,我們先查詢(xún)一下數(shù)據(jù)庫(kù),此時(shí)不存在db_student的庫(kù)

SpringBoot整合之SpringBoot整合MongoDB的詳細(xì)步驟

開(kāi)始測(cè)試

package cn.byuan;

import cn.byuan.dao.StudentDaoTypeOne;
import cn.byuan.entity.Student;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.Date;
import java.util.List;

@SpringBootTest
class StudentDaoTypeOneTests {

    @Autowired
    private StudentDaoTypeOne studentDaoTypeOne;

    @Test
    void addOneStudent(){
//        插入10行
        for (Integer count = 0; count < 10; count++) {
            Student student = new Student()
                    .setStudentId("student_"+count) //如果自己不去設(shè)置id則系統(tǒng)會(huì)分配給一個(gè)id
                    .setStudentName("Godfery"+count)
                    .setStudentAge(count)
                    .setStudentScore(98.5-count)
                    .setStudentBirthday(new Date());
            studentDaoTypeOne.save(student);
        }
    }

    @Test
    void deleteOneStudentByStudentId(){
//        刪除id為student_0的學(xué)生
        studentDaoTypeOne.deleteById("student_0");
    }

    @Test
    void updateOneStudent(){
//        修改姓名為Godfery1的Student年齡為22
        Student student = studentDaoTypeOne.getAllByStudentName("Godfery1");
        student.setStudentAge(22);
        studentDaoTypeOne.save(student);

    }

    @Test
    void getOneStudentByStudentId(){
        System.out.println(studentDaoTypeOne.findById("student_1"));
    }

    @Test
    void getAllStudent(){
        List<Student> studentList = studentDaoTypeOne.findAll();
        studentList.forEach(System.out::println);
    }

}

SpringBoot整合之SpringBoot整合MongoDB的詳細(xì)步驟

我們先來(lái)查看一下數(shù)據(jù)庫(kù)

SpringBoot整合之SpringBoot整合MongoDB的詳細(xì)步驟

進(jìn)入數(shù)據(jù)庫(kù)查看一下數(shù)據(jù)

SpringBoot整合之SpringBoot整合MongoDB的詳細(xì)步驟

(二)dao層寫(xiě)法二

1.編碼部分

接口部分

package cn.byuan.dao;

import cn.byuan.entity.Student;

import java.util.List;

/*
* dao層寫(xiě)法二
*
* 寫(xiě)法二需要進(jìn)行實(shí)現(xiàn)
* */
public interface StudentDaoTypeTwo {
//    增加一位學(xué)生
    void addOneStudent(Student student);

//    根據(jù)id刪除一位學(xué)生
    void deleteOneStudentByStudentId(String studentId);

//    修改一位學(xué)生的信息
    void updateOneStudent(Student student);

//    根據(jù)主鍵id獲取一名學(xué)生
    Student getOneStudentByStudentId(String studentId);

//    獲取全部學(xué)生
    List<Student> getAllStudent();
}

實(shí)現(xiàn)類(lèi)

package cn.byuan.dao.imp;

import cn.byuan.dao.StudentDaoTypeTwo;
import cn.byuan.entity.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public class StudentDaoTypeTwoImp implements StudentDaoTypeTwo {

//    使用MongoTemplate模板類(lèi)實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作
    @Autowired
    private MongoTemplate mongoTemplate;

//    增加一位學(xué)生
    public void addOneStudent(Student student){
        mongoTemplate.save(student);

    }

//    根據(jù)id刪除一位學(xué)生
    public void deleteOneStudentByStudentId(String studentId){
        Student student = mongoTemplate.findById(studentId, Student.class);
        if(student != null){
            mongoTemplate.remove(student);
        }

    }

//    修改一位學(xué)生的信息
    public void updateOneStudent(Student student){
        mongoTemplate.save(student);
    }

//    根據(jù)主鍵id獲取一名學(xué)生
    public Student getOneStudentByStudentId(String studentId){
        return mongoTemplate.findById(studentId, Student.class);
    }

//    獲取全部學(xué)生
    public List<Student> getAllStudent(){
        return mongoTemplate.findAll(Student.class);
    }
}

2.測(cè)試部分

package cn.byuan;

import cn.byuan.dao.StudentDaoTypeOne;
import cn.byuan.dao.StudentDaoTypeTwo;
import cn.byuan.entity.Student;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.Date;
import java.util.List;

@SpringBootTest
class StudentDaoTypeTwoTests {

    @Autowired
    private StudentDaoTypeTwo studentDaoTypeTwo;

    @Test
    void addOneStudent(){
//        插入10行
        for (Integer count = 0; count < 10; count++) {
            Student student = new Student()
                    .setStudentId("study_"+count) //如果自己不去設(shè)置id則系統(tǒng)會(huì)分配給一個(gè)id
                    .setStudentName("Echo"+count)
                    .setStudentAge(count)
                    .setStudentScore(98.5-count)
                    .setStudentBirthday(new Date());
            studentDaoTypeTwo.addOneStudent(student);
        }
    }

    @Test
    void deleteOneStudentByStudentId(){
//        刪除id為study_0的學(xué)生
        studentDaoTypeTwo.deleteOneStudentByStudentId("study_0");
    }

    @Test
    void updateOneStudent(){
//        修改id為study_1的Student年齡為21
        Student student = studentDaoTypeTwo.getOneStudentByStudentId("study_1");
        student.setStudentAge(21);
        studentDaoTypeTwo.updateOneStudent(student);

    }

    @Test
    void getOneStudentByStudentId(){
        System.out.println(studentDaoTypeTwo.getOneStudentByStudentId("study_1"));
    }

    @Test
    void getAllStudent(){
        List<Student> studentList = studentDaoTypeTwo.getAllStudent();
        studentList.forEach(System.out::println);
    }

}

SpringBoot整合之SpringBoot整合MongoDB的詳細(xì)步驟

進(jìn)入數(shù)據(jù)庫(kù)查看一下數(shù)據(jù)

SpringBoot整合之SpringBoot整合MongoDB的詳細(xì)步驟

源碼地址:https://github.com/byuan98/springboot-integration/tree/master/test008_springboot_mongodb

到此這篇關(guān)于SpringBoot整合之SpringBoot整合MongoDB的詳細(xì)步驟的文章就介紹到這了,更多相關(guān)SpringBoot整合MongoDB內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

到此這篇關(guān)于SpringBoot整合之SpringBoot整合MongoDB的詳細(xì)步驟的文章就介紹到這了,更多相關(guān)SpringBoot整合MongoDB內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://www.cnblogs.com/byuan/p/14992548.html

延伸 · 閱讀

精彩推薦
  • Java教程Java實(shí)現(xiàn)搶紅包功能

    Java實(shí)現(xiàn)搶紅包功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)搶紅包功能,采用多線(xiàn)程模擬多人同時(shí)搶紅包,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程升級(jí)IDEA后Lombok不能使用的解決方法

    升級(jí)IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級(jí),尋思已經(jīng)有好久沒(méi)有升過(guò)級(jí)了。升級(jí)完畢重啟之后,突然發(fā)現(xiàn)好多錯(cuò)誤,本文就來(lái)介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程xml與Java對(duì)象的轉(zhuǎn)換詳解

    xml與Java對(duì)象的轉(zhuǎn)換詳解

    這篇文章主要介紹了xml與Java對(duì)象的轉(zhuǎn)換詳解的相關(guān)資料,需要的朋友可以參考下...

    Java教程網(wǎng)2942020-09-17
  • Java教程Java BufferWriter寫(xiě)文件寫(xiě)不進(jìn)去或缺失數(shù)據(jù)的解決

    Java BufferWriter寫(xiě)文件寫(xiě)不進(jìn)去或缺失數(shù)據(jù)的解決

    這篇文章主要介紹了Java BufferWriter寫(xiě)文件寫(xiě)不進(jìn)去或缺失數(shù)據(jù)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關(guān)于小米推送Java代碼,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧...

    富貴穩(wěn)中求8032021-07-12
  • Java教程Java8中Stream使用的一個(gè)注意事項(xiàng)

    Java8中Stream使用的一個(gè)注意事項(xiàng)

    最近在工作中發(fā)現(xiàn)了對(duì)于集合操作轉(zhuǎn)換的神器,java8新特性 stream,但在使用中遇到了一個(gè)非常重要的注意點(diǎn),所以這篇文章主要給大家介紹了關(guān)于Java8中S...

    阿杜7472021-02-04
  • Java教程20個(gè)非常實(shí)用的Java程序代碼片段

    20個(gè)非常實(shí)用的Java程序代碼片段

    這篇文章主要為大家分享了20個(gè)非常實(shí)用的Java程序片段,對(duì)java開(kāi)發(fā)項(xiàng)目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
主站蜘蛛池模板: aaaa黄色片| 久久99国产亚洲高清观着 | 69日本人xxxxxxxx色 | 99久久免费国产精品热 | 99久久香蕉 | 午夜伦理电影在线观免费 | 日韩欧美成末人一区二区三区 | 男人叼女人的痛爽视频免费 | 99国产精品免费观看视频 | 日韩视频在线精品视频免费观看 | 欧美成人中文字幕 | 国产精品久久久久久久久ktv | 日韩一区国产二区欧美三 | 激情六月丁香婷婷四房播 | 丰腴尤物贵妇浪荡小说 | 国产91青青成人a在线 | 欧美老骚 | 亚洲国产99 | 含羞草传媒每天免费一次破解 | 国产亚洲视频网站 | 无套插入| 久久午夜夜伦痒痒想咳嗽P 久久无码AV亚洲精品色午夜麻豆 | 欧美一区精品 | 国产精品原创视频 | 色先锋 影音先锋a 资源站 | 性姿势女人嗷嗷叫图片 | 亚飞与亚基国语1080p在线观看 | 日韩精品高清自在线 | 国产日韩欧美视频 | 星空无限传媒xk8046 | 成人国产第一区在线观看 | 99久久免费国产精品热 | 91精品国产亚洲爽啪在线影院 | 色花堂中文字幕98堂网址 | 日产中文乱码卡一卡二 | 99热久久国产精品这里 | 冰山美人调教耻辱h | 秋霞理论一级在线观看手机版 | 国产精品嫩草影院一二三区入口 | 亚洲女同一区二区 | 美女任你模 |