SpringBoot集成MongoDB

前言

在这里本文只是对SpringBoot集成MongoDB这样过程进行阐述,关于MongoDB的使用和介绍将会在之后的MongoDB系列中进行详细介绍。由于目前使用的电脑硬盘有限,以及开发环境的限制,本文的MongoDB是在Windows系统上的版本。之后的集群操作等都不会在本文中出现

集成MongDB

  1. 引入依赖
      
            org.springframework.boot
            spring-boot-starter-data-mongodb
            RELEASE
        

SpringBoot引入MongoDB的pom依赖,简洁明了。实在是程序猿必备良品呀。

  1. 配置application
# mongodb 配置
spring.data.mongodb.uri=mongodb://localhost:27017
spring.data.mongodb.database=hmily

我们这里只是简单的配置了MongoDB地址以及使用的数据库,这是基于SpringBoot的配置,SpringBoot将会自动将配置注入到MongoProperties,并加载到容器中,我们就可以直接拿来使用了。

  1. MongoDB配置
package com.pcp.ucenter.mongoDB;

import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;

/**
 * DESC:配置MongoDB数据访问接口
 * USER:hmily
 * DATE:2018/1/3
 * TIME:15:23
 */
@Configuration
@EnableMongoRepositories(
        basePackages = "com.pcp.ucenter.dao",
        mongoTemplateRef = MongoConfig.MONGO_TEMPLATE)
public class MongoConfig {
    protected static final String MONGO_TEMPLATE = "mongoTemplate";
}

package com.pcp.ucenter.mongoDB;

import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.mongo.MongoProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;

/**
 * DESC:MongoTemplate
 * USER:hmily
 * DATE:2018/1/3
 * TIME:15:26
 */
@Configuration
public class MongoTemplateConfig {

    @Bean(name = MongoConfig.MONGO_TEMPLATE)
    public MongoTemplate primaryMongoTemplate(@Qualifier("primaryFactory") MongoDbFactory factory) throws Exception {
        return new MongoTemplate(factory);
    }

    @Bean("primaryFactory")
    public MongoDbFactory primaryFactory(MongoProperties mongo) throws Exception {
        MongoClient client = new MongoClient(new MongoClientURI(mongo.getUri()));
        return new SimpleMongoDbFactory(client, mongo.getDatabase());
    }
}

以上代码,我们就实现了MongoDb与我们数据访问层的绑定,同时大家可以从类的代码中可以看出,我们是可以支持多数据源配置的,这里只是简单的介绍了单数据源情况下MongoDB的配置和使用,大家可以举一返三,动手实践一下。

在上上述代码中,我们看到basePackages = "com.pcp.ucenter.dao" ,那么我们的数据访问层DAO又怎么实现了。

  1. Dao
package com.pcp.ucenter.dao;

import com.pcp.ucenter.entity.UserEntity;
import org.springframework.data.mongodb.repository.MongoRepository;

/**
 * DESC:用户数据访问
 * USER:hmily
 * DATE:2018/1/3
 * TIME:14:55
 */
public interface UserDao extends MongoRepository {

    UserEntity findByUserName(String userName);

}

我们将Dao继承MongoRepository,这是一个基于JPA形式的,我们可以按照JPA标准命名我们接口中的方法或者自定义接口的实现。对于MongoDB操作又近了一步。有了以上的配置,我们基本可以上手使用了

5.测试用例

import com.pcp.AppLoader;
import com.pcp.ucenter.dao.UserDao;
import com.pcp.ucenter.entity.UserEntity;
import com.pcp.ucenter.service.UserService;
import org.junit.Ignore;
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.SpringRunner;

import java.util.List;

/**
 * DESC:
 * USER:hmily
 * DATE:2018/1/3
 * TIME:15:35
 */
@RunWith(SpringRunner.class)
@SpringBootTest(classes = AppLoader.class)
public class TestMongo {

    @Autowired
    private UserDao userDao;

    @Autowired
    private UserService userService;

    @Test
    @Ignore
    public void testMongoInsert(){
        UserEntity userEntity = new UserEntity();
        //userEntity.setId(1L);
        userEntity.setAge("18");
        userEntity.setEmail("[email protected]");
        userEntity.setUserName("hmily");
        userEntity.setPassword("111111");
        userDao.insert(userEntity);
    }

    @Test
    @Ignore
    public void testMongoSelect(){
        List users = userDao.findAll();
        for (UserEntity u : users){
            System.out.println(u.getUserName());
        }
    }

    @Test
    @Ignore
    public void testService(){
        //UserEntity hmily = userService.findByUserName("hmily");
        //System.out.println(hmily.getUserName());
        //String hmily = userService.login("hmily", "111111");
        //System.out.println(hmily);
    }
}

你可能感兴趣的:(SpringBoot集成MongoDB)