1. 程式人生 > >springboot 整合mongodb並操作簡單增刪改查

springboot 整合mongodb並操作簡單增刪改查

宣告:

執行環境:jdk 1.8、maven3.5.4、spingboot 2.0、mongodb、等

操作步驟:

第一步:pom檔案中新增jar包依賴(正常情況下)

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

非正常情況:已經引入log4j2.、jar包時會產生jar包衝突,需要去除logging如下

<!--mongodb -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

 

第二步:編寫配置檔案

此處配置檔案為yml檔案故為一下格式:

host是你mongodb的地址,如果是本機直接寫localhost  port預設 27017  database資料庫  username password 看mongodb是否有使用者名稱密碼如果沒有可以不寫

spring:
  data:
    mongodb:
      host: 172.20.94.39
      database: admin
      port: 27017
      username: root
      password: root

第三步:可以直接呼叫mongodb模板類實現增刪改查

示例:執行實現新增功能。更新,查詢,刪除都可以用 mongoTemplate直接獲得方法

 

import com.mongodb.*;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.InsertOneModel;
import com.mongodb.client.model.WriteModel;
import com.rrc.marketing.adsscheduler.AdsMarketingSchedulerApplication;
import com.rrc.marketing.adsscheduler.utils.MongDBUtil;
import com.rrc.marketing.core.po.sem.SemAccountInfoEntity;
import com.rrc.marketing.core.po.sem.SemDownloadTaskEntity;
import org.apache.commons.lang.StringUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
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.test.context.junit4.SpringRunner;
import tk.mybatis.mapper.entity.Example;
import javax.annotation.Resource;
import org.bson.Document;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.ConcurrentLinkedQueue;


@RunWith(SpringRunner.class)
@SpringBootTest(classes = AdsMarketingSchedulerApplication.class)
public class SemKeywortReportDataTests {

    @Autowired
    private MongoTemplate mongoTemplate;

    @Test
    public void testMongodb() {
        SemKeywordReportBaiduEntity semKeywordReportBaiduEntity=new SemKeywordReportBaiduEntity();
        semKeywordReportBaiduEntity.setAccountName("張三");
        semKeywordReportBaiduEntity.setKeyword("關鍵詞1");
        semKeywordReportBaiduEntity.setAccountId(123456L);
        mongoTemplate.save(semKeywordReportBaiduEntity);*/
      
    }
 
     
}

執行成功的結果:

安裝NoSQLBooster for Mongo DB windows視覺化工具

安裝連線步驟自行搜尋百度
連線上mongodb資料庫檢視資料內容 根據實體自動建立文件,

注意:如果實體中有Id欄位,又想使用mongodb自己生成的md5主鍵的話,需要把實體中的id引數去除。這樣mongodb自己會生成一個_id 主鍵,值為不重複的md5字串。

mongodb有,單條資料增加,批量資料增加。單條更新,批量更新,單條刪除。批量刪除等功能,此處用mongoTemplate可以得到封裝好的方法可以直接使用,也可以換一種連線方式

 

第二種連線方式:直接連線mongodb使用,

同樣需要加入上述jar包,然後建立MognDBUtil類,加入連線資訊。注意修改ip和庫名以及username和password

package com.rrc.marketing.adsscheduler.utils;

import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoDatabase;

import java.util.ArrayList;
import java.util.List;

//mongodb 連線資料庫工具類
public class MongDBUtil {
    //不通過認證獲取連線資料庫物件
    public static MongoDatabase getConnect(){
        //連線到 mongodb 服務
        MongoClient mongoClient = new MongoClient("localhost", 27017);

        //連線到資料庫
        MongoDatabase mongoDatabase = mongoClient.getDatabase("test");

        //返回連線資料庫物件
        return mongoDatabase;
    }

    //需要密碼認證方式連線
    public static MongoDatabase getConnect2(){
        List<ServerAddress> adds = new ArrayList<>();
        //ServerAddress()兩個引數分別為 伺服器地址 和 埠
        ServerAddress serverAddress = new ServerAddress("172.20.94.39", 27017);
        adds.add(serverAddress);

        List<MongoCredential> credentials = new ArrayList<>();
        //MongoCredential.createScramSha1Credential()三個引數分別為 使用者名稱 資料庫名稱 密碼
        MongoCredential mongoCredential = MongoCredential.createScramSha1Credential("root", "admin", "root".toCharArray());
        credentials.add(mongoCredential);

        //通過連線認證獲取MongoDB連線
        MongoClient mongoClient = new MongoClient(adds, credentials);

        //連線到資料庫
        MongoDatabase mongoDatabase = mongoClient.getDatabase("test");

        //返回連線資料庫物件
        return mongoDatabase;
    }
}

建立之後用測試方法測試插入資料

import com.mongodb.*;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.InsertOneModel;
import com.mongodb.client.model.WriteModel;
import com.rrc.marketing.adsscheduler.AdsMarketingSchedulerApplication;
import com.rrc.marketing.adsscheduler.utils.MongDBUtil;
import com.rrc.marketing.core.po.sem.SemAccountInfoEntity;
import com.rrc.marketing.core.po.sem.SemDownloadTaskEntity;
import org.apache.commons.lang.StringUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
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.test.context.junit4.SpringRunner;
import tk.mybatis.mapper.entity.Example;
import javax.annotation.Resource;
import org.bson.Document;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.ConcurrentLinkedQueue;


@RunWith(SpringRunner.class)
@SpringBootTest(classes = AdsMarketingSchedulerApplication.class)
public class SemKeywortReportDataTests {

    @Autowired
    private MongoTemplate mongoTemplate;

    @Test
    public void testMongodb() {
        MongoCollection<Document> collection =     MongDBUtil.getConnect2().getCollection("user");
        //建立文件
        Document document = new Document("name","張三")
                .append("sex", "男")
                .append("age", 18);
        collection.insertOne(document);
      
    }
 
     
}

檢視插入之後的結果:

 

以上就是springboot整合mongodb的簡單例項,

感謝觀看