1.简介
MongoDB 是一个基于分布式文件存储的数据库。
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系型数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
2.特点
它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
*面向集合存储,易存储对象类型的数据。
*模式自由。
*支持动态查询。
*支持完全索引,包含内部对象。
*支持查询。
*支持复制和故障恢复。
*使用高效的二进制数据存储,包括大型对象(如视频等)。
*自动处理碎片,以支持云计算层次的扩展性。
*支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
*文件存储格式为BSON(一种JSON的扩展)。
*可通过网络访问。
3.maven依赖
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
</dependency>
4. .properties文件
#mongodb
mongo.host=127.0.0.1
mongo.name=test
mongo.port=27017
5.config文件(工具类)
package com.jd.consumer.config;
import com.mongodb.Mongo;
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.data.mongodb.config.AbstractMongoConfiguration;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Administrator on 2018/8/21.
*/
@Configuration
@EnableMongoRepositories(basePackages={"com.jd.consumer.service"})//MongoRepository的扫描包
@PropertySource("classpath:application.properties")//注入配置文件属性
public class MongoConfig extends AbstractMongoConfiguration {
@Autowired
private Environment env;
@Override
protected String getDatabaseName() {
return env.getRequiredProperty("mongo.name");
}
@Bean
public Mongo mongo() throws Exception {
ServerAddress serverAddress=new ServerAddress(env.getRequiredProperty("mongo.host"));
List<MongoCredential> credentials=new ArrayList<>();
return new MongoClient(serverAddress, credentials);
}
@Override
public MongoClient mongoClient() {
ServerAddress serverAddress=new ServerAddress(env.getRequiredProperty("mongo.host"));
List<MongoCredential> credentials=new ArrayList<>();
return new MongoClient(serverAddress, credentials);
}
}
5.Repository类
import com.jd.api.model.RequestLogMQMsgModel;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;
/**
* Created by Administrator on 2018/8/21.
*/
@Repository
public interface EmailRepository extends MongoRepository<RequestLogMQMsgModel, String> {
}
6.测试类
import com.jd.api.model.RequestLogMQMsgModel;
import com.jd.consumer.config.MongoConfig;
import com.jd.consumer.service.EmailRepository;
import org.junit.Before;
import org.junit.FixMethodOrder;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* Created by Administrator on 2018/8/21.
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={MongoConfig.class})
@FixMethodOrder
public class Test {
@Autowired
EmailRepository repository;
@Before
public void setup() {
Set<String> roles=new HashSet<>();
String str[]={"1","2","3","4"};
roles.add("manage");
RequestLogMQMsgModel requestLogMQMsgModel=new RequestLogMQMsgModel();
requestLogMQMsgModel.setCostTime(1);
requestLogMQMsgModel.setMethodName("txf");
requestLogMQMsgModel.setParamNames(str);
requestLogMQMsgModel.setRemoteAddr("[email protected]");
requestLogMQMsgModel.setParamTypes(str);
requestLogMQMsgModel.setParamValues(str);
requestLogMQMsgModel.setRequestMethod("1");
requestLogMQMsgModel.setRequestURI("1111");
requestLogMQMsgModel.setUserEmail("[email protected]");
repository.save(requestLogMQMsgModel);
}
@org.junit.Test
public void findAll() {
List<RequestLogMQMsgModel> users=repository.findAll();
for(RequestLogMQMsgModel user:users) {
System.out.println(user.getRemoteAddr());
}
}
}