SpringDataMongo連線MongoDB基礎用法

小小路人甲發表於2020-10-28

1.匯入maven依賴

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

2.配置yml

spring:
  application:
    name: mongo
  data:
    mongodb:
      # mongo開啟auth後需要使用者名稱、密碼,不開啟則不需要使用者名稱,密碼
      uri:  mongodb://root:root@localhost:27017
      database: db_test

3.編寫實體類,指明類對應於Mongo資料庫中的集合

@Data       //此註解會生成getter和setter方法
@ToString   //此註解會生成ToString方法
// @data @ToString是Lombok下的註解,可自動生成getter、setter、tostring方法
@Document(collection = "test") //指明此類對應db_test資料庫下的test集合
public class Test {
    //id 對應資料庫中的主鍵(_id,自動生成)
    @Id
    private String id;

    private String name;
}

4.寫dao介面,繼承MongoRepository<T,ID>,其中T為要查詢的實體類,ID為主鍵型別

import org.springframework.data.mongodb.repository.MongoRepository;
public interface TestRepository extends MongoRepository<Test,String> {
    //根據名稱查詢
    Test findByName(String name);
}

檢視TestRepository介面中的方法

在這裡插入圖片描述

5.測試

	// 注入TestRepository物件
	@Autowired
    TestRepository TestRepository ;

	// 測試查詢所有方法
    @Test
    public void testFindAll(){
        List<Test> list= TestRepository .findAll();
        System.out.println(list);
    }

	// 分頁查詢
    @Test
    public void testFindPage(){
        //分頁引數
        int page = 0;	// 頁數從0開始,代表第一頁
        int size = 10;	// 頁面大小
        // 返回值型別可以用Pageable接收,因為PageRequest的父類實現了Pageable介面,這裡用到了多型
        //Pageable pageable = PageRequest.of(page,size);
        PageRequest pageable = PageRequest.of(page,size);
        Page<Test> page= TestRepository.findAll(pageable);
        System.out.println(page.getContent());
    }

	// 更新資料
    @Test
    public void testUpdate() {
        //查詢物件
        Optional<Test> optional = TestRepository.findById("資料庫中的主鍵Id(ObjectId型別)");
        // 判斷optical是否為空
        /**
        原始碼:
        public boolean isPresent() {
        	return value != null;
    	}
        */
        if(optional.isPresent()){
            Test test= optional.get();
            //設定要修改值
            test.setName("test01");
            //...
            // 儲存到資料庫中
            Test save = TestRepository.save(test);
            System.out.println(save);
        }
    }

	// 新增資料
	@Test
    public void testSave(){
    	Test test = new Test();
    	test.setName("test02");
        Test save = TestRepository.save(test);
        System.out.println(save);
    }
	
	// 自定義根據name查詢
    @Test
    public void testfindByname(){
        Test test= TestRepository.findByName("test02");
        System.out.println(test);
    }

相關文章