您的位置:首页 > 数据库 > Mongodb

Java 访问 MongoDB (使用Spring-Data-MongoDB)

2016-02-24 19:40 666 查看
使用Spring-Data-MongoDB

首页:http://projects.spring.io/spring-data-mongodb/
详细的参考文档:http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/

简单配置:
1、引入依赖:

<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.8.2.RELEASE</version>
</dependency>


2、Spring配置文件:

@Configuration配置法:
@Configuration
public class MongoConfig {

@Value("${mongo.ip}")
private String MONGO_IP;
@Value("${mongo.port}")
private int MONGO_PORT;

@Bean
public MongoDbFactory mongoDbLog() throws Exception {
return new SimpleMongoDbFactory(new MongoClient(MONGO_IP, MONGO_PORT), "dbName");
}

@Bean
public MongoTemplate mongoTemplateLog() throws Exception {
return new MongoTemplate(mongoDbLog());
}
}


XML配置法:

<!-- 使用缺省的配置,省略<mongo:options/>配置 -->
<mongo:mongo host="${mongo.ip}" port="${mongo.port}"/>

<!-- Db Factory-->
<mongo:db-factory id="logDbFactory" dbname="dbName" mongo-ref="mongo" />

<!-- mongodb模板 for log -->
<bean id="mongoTemplateLogDB" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="logDbFactory" />
</bean>

3、定义一个实体类(带注解):

public class UserOpLog {
@Id private String id;
@Field("uId") private int userId; //用户ID
@Field("ip") private String loginIp;//请求IP
private String method;//方法名
private String url;//请求URL
@Transient private String params;//请求参数,用于保存到MySQL中
@Field("rCode") private String resultCode;//返回代码
@Field("rMsg") private String resultMsg;//返回信息
@Field("ms") private long costMs;//耗时,单位:毫秒
private long ctime;//创建时间
@Field("params") Set<Object> allParams;//所有未经过处理的参数,包括JSON String,Form Data,和Query String
JsonResult result; //返回结果

//getters、setters略……
}


几种常用注解的用法:
@Document:把一个java类声明为mongodb的文档,可以通过collection参数指定这个类对应的Collection名字。
@Id:文档的唯一标识,在mongodb中为ObjectId,它是唯一的:时间戳+机器标识+进程ID+自增计数器(确保同一秒内产生的Id不会冲突)。
@Field:指定保存在mongoDB的名字,感觉类成员名字不好又不想改的时候可以用这个注解。
@Indexed:声明该字段需要索引,建索引可以大大的提高查询效率。
@CompoundIndex:复合索引的声明,建复合索引可以有效地提高多字段的查询效率。
@Transient:映射忽略的字段,该字段不会保存到mongodb。
@PersistenceConstructor:声明构造函数,作用是把从数据库取出的数据实例化为对象。该构造函数传入的值为从DBObject中取出的数据。

4、把实体类插入mongoDB:

@Autowired
private MongoTemplate mongoTemplateLogDB;

UserOpLog userOpLog = new UserOpLog();
mongoTemplateLogDB.save(userOpLog, "collectionName");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息