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

使用Spring-Data-MongoDB


简单配置:
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");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值