天天看點

springboot中mongodb內建與使用

mognodb是由C++語言編寫的,是一個基于分布式檔案存儲的開源nosql資料庫系統,旨在為WEB應用提供可擴充的高性能資料存儲解決方案。在高負載的情況下,添加更多的節點,可以保證伺服器性能。

由于其的高性能,以及文檔型的存儲結構,在開發的使用已經非常普及了。那麼接下來就來看一下如何在springboot中內建使用mongodb。

依賴引入

springboot一個強大的特性就是自動配置功能,那麼其為mongodb的自動內建提供了一個starter,在我們的項目中加入即可,如下:

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

同時我們亦加入lombok(詳見Lombok插件講解)和test相關的依賴,友善後面的案例示範:

<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
           

配置引入

springboot的自動配置屬性在

MongoProperties

中,其為提供了uri、host+port兩種方式去配置mongodb,其中如果需要密碼驗證時隻能使用host+port的方式進行配置(具體可詳見源碼)。這裡,我們使用host+port的方式,并不去驗證密碼,配置資訊如下:

spring:
  data:
    mongodb:
#      uri: mongodb://127.0.0.1:27017/sbac_master
      host: 127.0.0.1
      port: 27017
#      username: sbac
#      password: sbac
      database: sbac_master
           

使用案例

經過依賴引入與自動配置,mongodb以及內建完畢了,到這裡就該是示範如何使用了。

我們先定義一個PO實體,擁有一些簡單的字段,如下所示:

@Data
@ToString
@Document(collection = "user")
public class User {

    private String id;
    private String username;
    private String password;
    private String telephone;
    private String editor;
    private Date createTime;
    private Date updateTime;
}
           

然後使用spring-data形式實作持久化層(當然持久層方面亦可以使用

MongoTemplate

來實作,筆者更喜歡使用

MongoTemplate

),如下:

public interface UserRepository extends MongoRepository<User, String> {

    User findByUsername(String username);
}
           

到這裡,就可以直接對持久層的接口進行測試了,下面是我們的測試代碼:

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

    @Resource
    private UserRepository userRepository;

    @Test
    public void testInsert() {
        User user = new User();
        user.setUsername("simple");
        user.setPassword("123456");
        user.setTelephone("18888888888");
        user.setEditor("admin");
        user.setCreateTime(new Date());
        user.setUpdateTime(new Date());
        userRepository.insert(user);
    }

    @Test
    public void testFindByUsername() {
        User user = userRepository.findByUsername("simple");
        System.out.println(user);
    }
}
           

案例源碼

案例源碼位址:https://github.com/lazycece/springboot-actual-combat/tree/master/springboot-ac-mongodb/springboot-ac-mongodb-simple

繼續閱讀