首頁 > 軟體

SpringBoot整合MongoDB完整範例程式碼

2022-02-16 10:00:04

一、新建專案

我們這次直接從IEDA建立專案,具體設定如下,還是萬年的Java8。

二、docker-compose 設定mongoDB

docker-compose.yml的具體設定如下,注意的是原生的資料夾data2022可以根據需要改成自己的名稱,如果本地還在跑其他MongoDB專案,注意埠號別衝突了。

version: "3"
services:
  mongo:
    image: mongo
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: root
    ports:
      - "27018:27017"
    volumes:
      - ~/data2022/mongodb/data:/data/db
      - ~/data2022/mongodb/conf:/data/configdb

啟動docker-compose up -d

本地測試連線MongoDB,根據設定,埠為 27018 ,預設使用者名稱密碼為 root 。

測試連線成功。

三、SpringBoot設定MongoDB

先新建名為ms的資料庫,application.yml組態檔如下

server:
  port: 8099
  servlet:
    encoding:
      charset: UTF-8
      force: true
spring:
  data:
    mongodb:
      uri: mongodb://root:root@localhost:27018/ms

啟動應用,檢視紀錄檔,連線成功。

問題:Exception authenticating MongoCredential

可能出現的問題 Exception authenticating MongoCredential ,可能是使用者沒有對應許可權,要重新建立一下。

db.createUser({
    user: "root",
    pwd: "root",
    roles: [
        {
            role: "root",
            db: "ms"
        }
    ],
    authenticationRestrictions: [ ],
    mechanisms: [
        "SCRAM-SHA-1"
    ],
    passwordDigestor: "client"
})

四、編寫測試類

我們通過MongoTemplate對MongoDB進行資料讀寫,後面詳細

簡單寫一些方法。

package com.example.springbootwithmongodb.entry;


import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;

@SpringBootTest
public class CatTest {

    @Autowired
    private MongoTemplate mongoTemplate;

    @Test
    public void createTest(){
        Cat cat = new Cat();
        cat.setName("糖果");
        cat.setAge(3);
        cat.setLikeCount(100);
        mongoTemplate.insert(cat);
    }
    
}

測試通過~

五、原始碼地址

本文原始碼同步更新在gitcode中,地址為 SpringBootWithMongoDB · master · 小雨青年 / Java Demo · GitCode

到此這篇關於SpringBoot整合MongoDB完整範例程式碼的文章就介紹到這了,更多相關SpringBoot整合MongoDB內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com