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

Java 中使用 SPRING DATA - MONGODB 开发

2012-10-19 12:36 651 查看
Spring Data 提供了一组在 Java 中访问 MongoDB 数据的API,使得我们可以使用类似 Spring 的 JdbcTemplate 类的方式来操作MongoDB,极大地简化了我们的开发步骤。

一、准备工作

和往常的开发步骤一样,首先我们需要准备一系列 jar 包,这里我截了一张图,如下所示。



其中 jar 包 commons-beanutils-1.8.3、commons-lang-2.6、commons-collections-3.2.1、commons-logging-1.1.1、ezmorph-1.0.6、json-lib-2.4,可以不导入,这些包是用来支持项目中使用JSON的。如果需要需要这些包,也可以从我的这篇文章中得到 /article/11317667.html

spring-data-mongo-1.1.0.M1.zip

mongo-2.9.1.jar

spring-framework-3.1.1.RELEASE.zip

aopalliance-1.0.jar

spring-web-3.2.0.M2.jar

二、数据库连接配置

使用Spring Data 连接 MongoDB 数据库有2种方式:一种是类似JDBC的方式得到连接,另一种是通过Spring读取XML配置文件的方式得到连接。

这里先介绍第一种连接方式,后续会介绍第二种连接。

1. 创建配置文件 “DataSource.properties” 用于存储数据库信息,方便以后修改。内容如下:

Host=127.0.0.1
Port=27017
Database=king
UserName=king
Password=king
以上配置分别为:目标数据库所在服务器地址,数据库连接端口,数据库名字,用户名和密码。*请根据实际情况进行配置。

2. 获取数据库连接

这里就不介绍负责数据库连接的接口和类了,有兴趣的话可以点击链接查看官方文档:接口 MongoOperations 和类 MongoTemplate。其中MongoTemplate
类实现了接口 MongoOperations。

下面我附上了自己写的MongoUtil类的源代码。该类主要封装了获取MongoTemplate实例的代码。

package com.report.util;

import java.net.UnknownHostException;
import java.util.Locale;
import java.util.ResourceBundle;

import org.springframework.data.authentication.UserCredentials;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;

import com.mongodb.Mongo;

public class MongoUtil {
private volatile static MongoOperations mongoOperation;
private static final String CONFIG_FILE_NAME = "DataSource";
private static final String KEY_HOST = "Host";
private static final String KEY_PORT = "Port";
private static final String KEY_DATABASE = "Database";
private static final String KEY_USERNAME = "UserName";
private static final String KEY_PASSWORD = "Password";

private MongoUtil() {
}

public static MongoOperations getMongoOperation() {
if (mongoOperation == null) {
ResourceBundle resourceBundle = ResourceBundle.getBundle(
CONFIG_FILE_NAME, Locale.getDefault());//获取配置文件“DataSource.properties”
String hostAddr = resourceBundle.getString(KEY_HOST) + ":"
+ resourceBundle.getString(KEY_PORT);
UserCredentials userCredentials = new UserCredentials(
resourceBundle.getString(KEY_USERNAME),
resourceBundle.getString(KEY_PASSWORD));
try {
mongoOperation = new MongoTemplate(
new SimpleMongoDbFactory(new Mongo(hostAddr),
resourceBundle.getString(KEY_DATABASE),
userCredentials));
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
return mongoOperation;
}

}


3. 在MongoDB中创建测试数据数据库、表和用户



MongoDB中创建数据库时,使用命令“Use XXX”,所以需要做一些额外的操作,数据库才会被创建,这里选择创建表“king”,如果不需要,可以使用“db.king.drop()”删除该表。MongoDB详细指令说明文档点此,也可在输入“help”寻求帮助。

4. 编写测试代码,验证数据库连通性

创建测试类TestMongoDB.java

package com.report.Tests;

import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;

import com.report.util.MongoUtil;

public class TestMongoDB {
private String firstName;
private String lastName;

TestMongoDB(String firstName, String lastName ){
this.firstName = firstName;
this.lastName = lastName;
}

public String getFirstName() {
return firstName;
}

public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getLastName() {
return lastName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}

public static void main(String[] args){
TestMongoDB test = new TestMongoDB("John", "Connor");
MongoUtil.getMongoOperation().insert(test);
TestMongoDB stored = MongoUtil.getMongoOperation().findOne(new Query(Criteria.where("firstName").is(test.getFirstName())),
TestMongoDB.class);
if (stored != null)
System.out.println(stored.getFirstName() + " " + stored.getLastName());
}
}
Eclipse Console 输出信息: John Connor

验证数据库记录:



结果与预期一样,在Java 中使用 SPRING DATA - MONGODB 开发成功。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: