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。
【Java 中使用 SPRING DATA - MONGODB 开发】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|Java基础——数组
- 人工智能|干货!人体姿态估计与运动预测
- java简介|Java是什么(Java能用来干什么?)
- Java|规范的打印日志
- Linux|109 个实用 shell 脚本
- 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理
- Spring注解驱动第十讲--@Autowired使用
- SqlServer|sql server的UPDLOCK、HOLDLOCK试验
- jvm|【JVM】JVM08(java内存模型解析[JMM])
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)