SpringBoot2.x整合Mongodb4.0


本品文章只做學習使用;

安裝mongodb推薦博客:https://www.jianshu.com/p/a75e26e5f635

1:如何在外網環境下開放mongodb

服務器版本:centos7.6

(1) 保證mongodb的啟動配置文件中使用了bind_ip=0.0.0.0

 

(2) 保證服務器開放了27017端口

(3) 保證雲服務器的安全組中開放了27017

可參考我之前的博客:https://www.cnblogs.com/zgq7/p/11564860.html


自述:昨天我在學習的時候使用mongodb桌面工具robo 3T連接我的外網mongodb時可以穩定快速的連接,

但是在我的SpringBoot項目中卻一直連接超時,經過重復的實驗及思考后分析出了問題所在:

1:我的robo 3T 采用的是SSH連接,讓我一直以為mongodb處於外網開放狀態

2:我的雲服務器沒有開放27017端口

3:我的安全組也沒有開放27017端口

徹底開放之后可以在服務器上做一下測試:

 

如出現上圖則表示mongodb外網徹底放通了。

 

2:如何在SpringBoot中整合

我的版本:SpringBoot2.1.7+Java8+Mongodb 4.0

(1): springboot中的依賴

 1     <dependencies>
 2         <dependency>
 3             <groupId>org.springframework.boot</groupId>
 4             <artifactId>spring-boot-starter</artifactId>
 5         </dependency>
 6 
 7         <dependency>
 8             <groupId>org.springframework.boot</groupId>
 9             <artifactId>spring-boot-starter-web</artifactId>
10         </dependency>
11 
12         <dependency>
13             <groupId>org.springframework.boot</groupId>
14             <artifactId>spring-boot-starter-data-mongodb</artifactId>
15         </dependency>
16 
17         <dependency>
18             <groupId>org.springframework.boot</groupId>
19             <artifactId>spring-boot-starter-test</artifactId>
20             <scope>test</scope>
21         </dependency>
22 
23     </dependencies>
View Code

(2): model

package com.boot.mongodb.model;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document(collection = "test")
public class UserModel {

    @Id
    private Object id;

    private String name;

    private Integer age;

    private String from;

    public UserModel() {
    }

    public UserModel(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public UserModel(Object id, String name, String from) {
        this.id = id;
        this.name = name;
        this.from = from;
    }

    public UserModel(Integer id, String name, Integer age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public UserModel(Object id, String name, Integer age, String from) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.from = from;
    }

    public Object getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "UserModel{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", from='" + from + '\'' +
                '}';
    }
}

 

1:@Document(collection = "test") 代表該實體映射到該庫的test集合

2:@ID 指該字段映射到test集合的ID

 

(3): 作為持久化有兩種方式:

1:使用Repostory的方式

 

package com.boot.mongodb.repository;

import com.boot.mongodb.model.UserModel;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository extends MongoRepository<UserModel, Integer> {
}

 

增刪改查:

    //==============================基於Repository的增刪改查
    @Test
    public void add() {
        UserModel userModel = new UserModel(1, "lzq", 23, "Repository");
        System.out.println(userRepository.insert(userModel));
    }

    @Test
    public void remove() {
        UserModel userModel = new UserModel(1, "lzq", 23, "Repository");
        userRepository.delete(userModel);
    }

    @Test
    public void update() {
        UserModel userModel = new UserModel(2, "lzq", 24, "Repository");
        //有則修改,無則新增
        System.out.println(userRepository.save(userModel));
    }

    @Test
    public void find() {
        System.out.println(userRepository.findAll());
        UserModel userModel = new UserModel(2, "lzq", 24, "Repository");
        Example example = Example.of(userModel);
        System.out.println(userRepository.findOne(example));
        System.out.println(userRepository.findAll(example));
    }

 

 

2:使用MongoTemplate的方式,不用創建對應的Repostroy

增刪改查

 

    //===============================基於MongoTemplate的增刪改查
    @Test
    public void tadd() {
        UserModel userModel = new UserModel(3, "lzq", 24, "MongoTemplate");
        logger.info("{}", mongoTemplate.insert(userModel));
    }

    @Test
    public void tdelete() {
        //UserModel userModel = new UserModel(3, "lzq", 24, "MongoTemplate");
        //輸出刪除的行數
        //System.out.println(mongoTemplate.remove(userModel).getDeletedCount());
        Query query = new Query(Criteria.where("id").is(3));
        logger.info("{}", mongoTemplate.remove(query, UserModel.class).getDeletedCount());
    }

    @Test
    public void tupdate() {
        Query query = new Query(Criteria.where("id").is(3));
        Update update = new Update().set("name", "2333333");
        logger.info("{}", mongoTemplate.updateFirst(query, update, UserModel.class));
    }

    @Test
    public void tfind() {
        Query query = new Query(Criteria.where("id").is(3));
        logger.info("{}", mongoTemplate.find(query, UserModel.class));
    }

 

 

3:完整項目github地址:https://github.com/zgq7/boot_collections/tree/master/boot_mongodb

歡迎私聊互相學習。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM