1. 程式人生 > >Springboot工程中操作mongoDB資料庫

Springboot工程中操作mongoDB資料庫

Springboot工程中操作mongoDB資料庫

引入mongodb的jar包

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

配置mongodb的資料庫連線

spring:
  application:
    name: xc‐service‐manage‐cms
  data
: mongodb: uri: mongodb://root:[email protected]:27017 database: xc_cms

springboot中為我們提供了一個操作mongodb的jar類MongoRepository<T, ID>,在Dao中只要繼承了該類就可以操作mongodb資料庫
T:代表與mongoDB資料庫對應的pojo類

public interface CmsPageRepository extends MongoRepository<CmsPage,String> {
}

編寫測試類來測試mongodb的dao類

增加
使用.save()方法

@SpringBootTest
@RunWith(SpringRunner.class)
public class CmsPageRepositoryTest {

    @Autowired
    private CmsPageRepository cmsPageRepository;

    //測試增加
    @Test
    public void savePage(){
        CmsPage cmsPage = new CmsPage();
        cmsPage.setPageName("測試頁面");
        cmsPage.
setDataUrl("00000"); cmsPage.setPageAliase("testPage"); cmsPage.setPageCreateTime(new Date()); cmsPageRepository.save(cmsPage); } }

刪除
根據id進行刪除
使用.deleteById(“id”);

//測試刪除
@Test
 public void deletePage(){
     cmsPageRepository.deleteById("5c0a32e6411435ad6bdec9b2");
 }

修改
修改的思路就是先查詢,然後新增

 //測試修改
@Test
public void updatePage(){
	/** 
	關於Optional: Optional是jdk1.8引入的型別,Optional是一個容器物件,它包括了我們需要的物件,使用isPresent方法判斷所包
	含物件是否為空,isPresent方法返回false則表示Optional包含物件為空,否則可以使用get()取出物件進行操作。 Optional的優點是:
	1、提醒你非空判斷。
	2、將物件非空檢測標準化。
	*/
     Optional<CmsPage> optional = cmsPageRepository.findById("5c0a351b411435b714f5abb8");
     if(optional.isPresent()){
         CmsPage cmsPage = optional.get();
         cmsPage.setPageName("頁面測試");
         cmsPageRepository.save(cmsPage);
     }
 }

查詢
MongoDB提供了類似於springDataJPA的自定義查詢方法規則
按照findByXXX,findByXXXAndYYY,CountByXXXAndYYY這樣的查詢規則進行查詢

//按照id進行查詢
T findById("xxxxxxxxx");
//按照id和名字進行查詢,注意前面的欄位要與後面的字串進行對應
T findByIdAndName("xxxxxxxx","xxxxxxxx");
//按照id和名字統計數量
int countByIdAndName("xxxxxxx","xxxxxxxx");
//根據id和名稱進行分頁查詢
Page<T> findByIdAndName("xxxxxxxx","xxxxxxxx",Pageable pageable);

栗子:

public interface CmsPageRepository extends MongoRepository<CmsPage,String> {
    //根據siteId和pageName進行分頁查詢
    Page<CmsPage> findBySiteIdAndPageName(String siteId, String pageName, Pageable pageable);
}
 //查詢測試
     public void findById(){
        int page = 0;
        int size = 10;
        Pageable pageable = PageRequest.of(page,size);
        Page<CmsPage> cmsPages = cmsPageRepository.findBySiteIdAndPageName("5a751fab6abb5044e0d19ea1", "課程詳情頁面", pageable);
        int num = cmsPages.getSize();
        System.out.println(num);
     }