mognodb是由C++语言编写的,是一个基于分布式文件存储的开源nosql数据库系统,旨在为WEB应用提供可扩展的高性能数据存储解决方案。在高负载的情况下,添加更多的节点,可以保证服务器性能。
由于其的高性能,以及文档型的存储结构,在开发的使用已经非常普及了。那么接下来就来看一下如何在springboot中集成使用mongodb。
依赖引入
springboot一个强大的特性就是自动配置功能,那么其为mongodb的自动集成提供了一个starter,在我们的项目中加入即可,如下:
1 2 3 4
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency>
|
同时我们亦加入lombok(详见Lombok插件讲解)和test相关的依赖,方便后面的案例演示:
1 2 3 4 5 6 7 8 9 10
| <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的方式,并不去验证密码,配置信息如下:
1 2 3 4 5 6 7 8 9
| spring: data: mongodb:
host: 127.0.0.1 port: 27017
database: sbac_master
|
使用案例
经过依赖引入与自动配置,mongodb以及集成完毕了,到这里就该是演示如何使用了。
我们先定义一个PO实体,拥有一些简单的字段,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13
| @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
),如下:
1 2 3 4
| public interface UserRepository extends MongoRepository<User, String> {
User findByUsername(String username); }
|
到这里,就可以直接对持久层的接口进行测试了,下面是我们的测试代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| @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