SpringBoot實現mongoDB的CRUD

disable發表於2021-09-09

mongoDB是一個使用非常廣的非關係型資料庫,在springboot中,可以非常方便的實現CRUD操作。

1.pom配置

目前大多數專案都用maven進行依賴包管理,因此,本文也採用maven進行配置。pom需要增加如下依賴:

       
            org.springframework.boot
            spring-boot-starter
        
        <!-- MongoDB --&gt
        
            org.springframework.boot
            spring-boot-starter-data-mongodb
        
        <!-- junit test --&gt
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        <!-- lombok --&gt
        
            org.projectlombok
            lombok
            1.16.10
            provided
        

主要的依賴包有三個:
spring-boot-starter 核心啟動包,spring-boot-starter-data-mongodb  mongoDB的相關依賴包,spring-boot-starter-test junit單元測試包。
其他的包如 lombok 則是為了省略部分程式碼。

2.資料模型類

package com.dhb.domain;import org.springframework.data.annotation.Id;import org.springframework.data.mongodb.core.mapping.Document;import lombok.Data;@Document(collection = "users")@Datapublic class User {    @Id
    private String id;    
    private String name;    
    private int age;    public User(String name,int age){        this.name = name;        this.age = age;
    }
    
}

透過lombok的@Data註解,省略了get和set方法。
@Document 表示對映到mongoDB中的表。collection = "users" 透過collection進行指定。
@Id 對映mongoDB中的ID欄位。

3.cuid方法Repository

springBoot提供了一個MongoRepository介面,只需要繼承該介面即可。亦可自定義方法。

package com.dhb.domain;import org.springframework.data.mongodb.repository.MongoRepository;public interface UserMongoRepository extends MongoRepository {    User findByName(String name);

}

4.junit單元測試

測試程式碼如下:

package com.dhb.test;import static org.junit.Assert.assertEquals;import static org.junit.Assert.assertNotNull;import static org.junit.Assert.assertNull;import org.junit.After;import org.junit.Before;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.test.context.junit4.SpringJUnit4ClassRunner;import com.dhb.domain.User;import com.dhb.domain.UserMongoRepository;@RunWith(SpringJUnit4ClassRunner.class)@SpringBootTestpublic class UserMongoRepositoryTest {    @Autowired
    private UserMongoRepository userMongoRepository;    @Before
    public void setUp() throws Exception {
        User user1 = new User("user1", 19);
        User user2 = new User("user2", 20);        // save product, verify has ID value after save
        assertNull(user1.getId());
        assertNull(user2.getId());// null before save
        this.userMongoRepository.save(user1);        this.userMongoRepository.save(user2);
        assertNotNull(user1.getId());
        assertNotNull(user2.getId());
    }    @Test
    public void testFetchData() {        /* Test data retrieval */
        User userA = userMongoRepository.findByName("user1");
        assertNotNull(userA);
        assertEquals(19, userA.getAge());        /* Get all products, list should only have two */
        Iterable users = userMongoRepository.findAll();        int count = 0;        for (User p : users) {
            count++;
        }
        assertEquals(count, 2);
    }    @Test
    public void testDataUpdate() {        /* Test update */
        User userB = userMongoRepository.findByName("user2");
        userB.setAge(40);
        userMongoRepository.save(userB);
        User userC = userMongoRepository.findByName("user2");
        assertNotNull(userC);
        assertEquals(40, userC.getAge());
    }    @After
    public void tearDown() throws Exception {        this.userMongoRepository.deleteAll();
    }

}

執行結果:

圖片描述

執行結果



作者:冬天裡的懶喵
連結:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/200/viewspace-2804429/,如需轉載,請註明出處,否則將追究法律責任。

相關文章