首頁 > 軟體

springboot整合mongodb

2023-04-02 06:02:32

1.mongodb的安裝和簡介

1.1簡介

MongoDB 是由C++語言編寫的,是一個基於分散式檔案儲存的開源資料庫系統。在高負載的情況下,新增更多的節點,可以保證伺服器效能。MongoDB 旨在為WEB應用提供可延伸的高效能資料儲存解決方案。MongoDB 將資料儲存為一個檔案,資料結構由鍵值(key=>value)對組成。MongoDB 檔案類似於 JSON 物件。欄位值可以包含其他檔案,陣列及檔案陣列。

1.2安裝

網上安裝的教學也比較多,我在這裡就不再多說了。直接提供一下我自己的db安裝包和視覺化安裝包,這裡的版本可能有點舊,需要新的包可以自行去網上下載!

資料庫連結:https://pan.baidu.com/s/1Pu7ijrzmzkYEp-jRgHENbA     提取碼:7cz2 

視覺化工具連結:https://pan.baidu.com/s/1ZBe_F5Eab1KYk6GAVono6w  提取碼:9g55 

1.3設定環境變數和檢查安裝情況

這裡的設定類似於jdk的設定,不再多說!檢視安裝和啟動資料庫

2.springboot整合mongodb

為了節省篇幅,好多註釋和空行都去掉了,大家見諒!

2.1pom檔案中maven的引入

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

2.2properties檔案設定

#################mongodb################
#spring.data.mongodb.uri=mongodb://username:password@localhost:27017/test
spring.data.mongodb.uri=mongodb://localhost:27017/springboot

2.3dao層的編寫

package com.lengmo.dao;
 
import com.lengmo.entity.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;
import java.util.List;
 
@Component
public class MongoDbDao {
    @Autowired
    private MongoTemplate mongoTemplate;
    public void save(Student s) {
        mongoTemplate.save(s);
    }
    public Student get(Query query) {
        return mongoTemplate.findOne(query,Student.class);
    }
    public List<Student> findAll() {
        return mongoTemplate.findAll(Student.class);
    }
    public void update(Query query, Update update) {
        mongoTemplate.updateMulti(query,update,Student.class);
    }
    public void delete(Query query) {
        mongoTemplate.remove(query,Student.class);
    }
}

2.4service層的編寫

這裡要熟悉mongodb的一些常規操作方法,多用多練習即可!!!!

package com.lengmo.service;
 
import com.lengmo.dao.MongoDbDao;
import com.lengmo.entity.Hobbies;
import com.lengmo.entity.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
import java.util.List;
 
@Service
public class MongoDbService {
    @Autowired
    private MongoDbDao mongoDbDao;
    public void save() {
        Student s=new Student();
        s.setName("lis");
        s.setAge(17);
        s.setSex(1);
        s.setHeight(182);
        Hobbies h=new Hobbies();
        h.setHname("swing");
        s.setHobbies(h);
        mongoDbDao.save(s);
    }
    public Student get() {
       //and查詢
        /* Criteria criteriaName=Criteria.where("name").is("lisi");
        Criteria criteriaAage=Criteria.where("age").is(17);
        Criteria andCriteria = new Criteria();
        andCriteria.andOperator(criteriaName,criteriaAage);
        Query query=new Query(andCriteria);*/
        //or查詢
        Criteria criteriaName=Criteria.where("name").is("lisi");
        Criteria criteriaAage=Criteria.where("age").gt(16);
        Criteria orCriteria = new Criteria();
        orCriteria.orOperator(criteriaName,criteriaAage);
        Query query=new Query(orCriteria);
 
        return  mongoDbDao.get(query);
    }
    public List<Student> findAll() {
        return mongoDbDao.findAll();
    }
    public void update() {
        Query query=new Query(Criteria.where("name").is("zhangsan"));
        Update update=new Update();
        update.set("age",30);
        update.set("height",188);
        update.set("hobbies.hname","basketball");
        mongoDbDao.update(query,update);
    }
    public void delete() {
        Query query=new Query(Criteria.where("name").is("zhangsan"));
        mongoDbDao.delete(query);
    }
}

2.5conreoller層的編寫

package com.lengmo.controller;
 
import com.lengmo.entity.Student;
import com.lengmo.service.MongoDbService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
 
@RestController
@RequestMapping("/mongodb")
public class MongoDbController {
    @Autowired
    private MongoDbService mongoDbService;
    @RequestMapping("/save")
    public void save(){
        mongoDbService.save();
    }
    @RequestMapping("/get")
    public Student get(){
        return mongoDbService.get();
    }
    @RequestMapping("/findAll")
    public List<Student> findAll(){
        return mongoDbService.findAll();
    }
 
    @RequestMapping("/update")
    public void update(){
        mongoDbService.update();
    }
    @RequestMapping("/delete")
    public void delete(){
        mongoDbService.delete();
    }
}

2.6實體類層的編寫(兩個類放一起了,你們記得分開)

package com.lengmo.entity;
import lombok.Data;
import javax.persistence.Id;
 
@Data
//之所以沒有像 mysql那樣需要@table標籤去標註我們的表名與實體類的對應關係。是因為 mongodb預設類名即與表名對應。
public class Student{
    @Id
    private String id;
    private String name;
    private Integer age;
    private Integer sex;
    private Integer height;
    private Hobbies hobbies;
}
 
 
 
package com.lengmo.entity;
import lombok.Data;
 
@Data
public class Hobbies {
    private  String hname;
}

至此所有的整合就完成了,接下來就是去驗證各個方法的使用了!

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


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