Java 中使用 SPRING DATA - MONGODB 开发

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的。如果需要需要这些包,也可以从我的这篇文章中得到 http://blog.csdn.net/wugewuge/article/details/8074272。

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 开发成功。

你可能感兴趣的:(Java)