- 浏览: 549978 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
jsdsh:
自己写的就是不一样.
Spring3 MVC 注解(二)---@RequestMapping -
jsdsh:
吼,非常吼.学习了
Spring3 MVC 注解(一)---注解基本配置及@controller和 @RequestMapping 常用解释 -
爱情是一种错觉:
我爱你 i love 你[color=red][/color] ...
Spring3 MVC 注解(一)---注解基本配置及@controller和 @RequestMapping 常用解释 -
fs08ab:
大哥,目前这个问题有什么可靠的解决方案吗
@ResponseBody注解 -
lhs295988029:
说的很清楚,明白了~
Spring3 MVC 注解(一)---注解基本配置及@controller和 @RequestMapping 常用解释
MongoDB 是一个可扩展的、高性能的、开源的NoSQL数据库,跟传统的数据库不一样,MongoDB并不是将数据存储在表中,他将数据结构化为一个类似于JSON 的文档中。这篇文章就是展示如何使用Java基于MongoDB和Spring Data创建一个CRUD应用。
Spring Data for MongoDB
Spring Data for MongoDB提供了一个类似于基于Sping编程模型的NoSQL数据存储。Spring Data for
MongoDB提供了很多特性,它使很多MongoDB的Java开发者解放了很多。MongoTemplate
helper类支持通用的Mongo操作。它整合了文档和POJO之间的对象映射。通常,他会转换数据库访问异常到Spring中的异常结构。使用起来非
常的方便。
你可以点击这里下载。
五步安装MongoDB
最清楚的安装步骤当然是MongoDB官方的安装说明了。安装说明。
- 从这里下载 最新的MongoDB。
- 解压到指定目录(这也算一步...)
- MongoDB需要一个存储文件的地方,Windows下默认的路径是C:\data\db。但是我们可以指定。例如我指定下面的路径
1
<strong>C:\mongodb\data\db</strong>
- 到C:\mongodb\bin 文件夹下执行如下命令。
1
C:\mongodb\bin\mongod.exe –dbpath C:\mongodb\data\db
如果你的路径包含空格,请使用双引号引起来。
- 到C:\mongodb\bin文件夹下,执行mongo.exe。默认的,mongo脚本将会监听localhost的27017端口。如果想将MongoDB作为windows的服务运行,点击这里。
到这里MongoDB的安装就完成了,接下来使用java搞CRUD。
五步使用Spring Data创建一个应用。
- 使用@Document注解指明一个领域对象将被持久化到MongoDB中。@Id注解identifies。
01
package
com.orangeslate.naturestore.domain;
02
03
import
org.springframework.data.annotation.Id;
04
import
org.springframework.data.mongodb.core.mapping.Document;
05
06
@Document
07
public
class
Tree {
08
09
@Id
10
private
String id;
11
12
private
String name;
13
14
private
String category;
15
16
private
int
age;
17
18
public
Tree(String id, String name,
int
age) {
19
this
.id = id;
20
this
.name = name;
21
this
.age = age;
22
}
23
24
public
String getId() {
25
return
id;
26
}
27
28
public
void
setId(String id) {
29
this
.id = id;
30
}
31
32
public
String getName() {
33
return
name;
34
}
35
36
public
void
setName(String name) {
37
this
.name = name;
38
}
39
40
public
String getCategory() {
41
return
category;
42
}
43
44
public
void
setCategory(String category) {
45
this
.category = category;
46
}
47
48
public
int
getAge() {
49
return
age;
50
}
51
52
public
void
setAge(
int
age) {
53
this
.age = age;
54
}
55
56
@Override
57
public
String toString() {
58
return
"Person [id="
+ id +
", name="
+ name +
", age="
+ age
59
+
", category="
+ category +
"]"
;
60
}
61
}
- 创建一个简单的接口。创建一个简单的接口,这个接口带有CRUD方法。这里我还带有createCollection方法和dropCollection方法。
01
package
com.orangeslate.naturestore.repository;
02
03
import
java.util.List;
04
05
import
com.mongodb.WriteResult;
06
07
public
interface
Repository<T> {
08
09
public
List<T> getAllObjects();
10
11
public
void
saveObject(T object);
12
13
public
T getObject(String id);
14
15
public
WriteResult updateObject(String id, String name);
16
17
public
void
deleteObject(String id);
18
19
public
void
createCollection();
20
21
public
void
dropCollection();
22
}
- 创建一个指定的领域对象CRUD的实现。
01
package
com.orangeslate.naturestore.repository;
02
03
import
java.util.List;
04
05
import
org.springframework.data.mongodb.core.MongoTemplate;
06
import
org.springframework.data.mongodb.core.query.Criteria;
07
import
org.springframework.data.mongodb.core.query.Query;
08
import
org.springframework.data.mongodb.core.query.Update;
09
10
import
com.mongodb.WriteResult;
11
import
com.orangeslate.naturestore.domain.Tree;
12
13
public
class
NatureRepositoryImpl
implements
Repository<Tree> {
14
15
MongoTemplate mongoTemplate;
16
17
public
void
setMongoTemplate(MongoTemplate mongoTemplate) {
18
this
.mongoTemplate = mongoTemplate;
19
}
20
21
/**
22
* Get all trees.
23
*/
24
public
List<Tree> getAllObjects() {
25
return
mongoTemplate.findAll(Tree.
class
);
26
}
27
28
/**
29
* Saves a {<a href="http://my.oschina.net/link1212" class="referer" target="_blank">@link</a> Tree}.
30
*/
31
public
void
saveObject(Tree tree) {
32
mongoTemplate.insert(tree);
33
}
34
35
/**
36
* Gets a {<a href="http://my.oschina.net/link1212" class="referer" target="_blank">@link</a> Tree} for a particular id.
37
*/
38
public
Tree getObject(String id) {
39
return
mongoTemplate.findOne(
new
Query(Criteria.where(
"id"
).is(id)),
40
Tree.
class
);
41
}
42
43
/**
44
* Updates a {<a href="http://my.oschina.net/link1212" class="referer" target="_blank">@link</a> Tree} name for a particular id.
45
*/
46
public
WriteResult updateObject(String id, String name) {
47
return
mongoTemplate.updateFirst(
48
new
Query(Criteria.where(
"id"
).is(id)),
49
Update.update(
"name"
, name), Tree.
class
);
50
}
51
52
/**
53
* Delete a {<a href="http://my.oschina.net/link1212" class="referer" target="_blank">@link</a> Tree} for a particular id.
54
*/
55
public
void
deleteObject(String id) {
56
mongoTemplate
57
.remove(
new
Query(Criteria.where(
"id"
).is(id)), Tree.
class
);
58
}
59
60
/**
61
* Create a {<a href="http://my.oschina.net/link1212" class="referer" target="_blank">@link</a> Tree} collection if the collection does not already
62
* exists
63
*/
64
public
void
createCollection() {
65
if
(!mongoTemplate.collectionExists(Tree.
class
)) {
66
mongoTemplate.createCollection(Tree.
class
);
67
}
68
}
69
70
/**
71
* Drops the {<a href="http://my.oschina.net/link1212" class="referer" target="_blank">@link</a> Tree} collection if the collection does already exists
72
*/
73
public
void
dropCollection() {
74
if
(mongoTemplate.collectionExists(Tree.
class
)) {
75
mongoTemplate.dropCollection(Tree.
class
);
76
}
77
}
78
}
- 创建Spring context。将所有spring beans和mongodb对象都声明在Spring
context文件中,这里创建的是applicationContext.xml文件。注意到我们并没有创建一个叫做"nature"的数据库。在第一
次存储数据的时候MongoDB将会为我们创建这个数据库。
01
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
02
<
beans
xmlns
=
"http://www.springframework.org/schema/beans"
03
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:context
=
"http://www.springframework.org/schema/context"
04
xsi:schemaLocation="http://www.springframework.org/schema/beans
05
06
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
07
08
09
http://www.springframework.org/schema/context
10
11
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
12
13
<
bean
id
=
"natureRepository"
14
class
=
"com.orangeslate.naturestore.repository.NatureRepositoryImpl"
>
15
<
property
name
=
"mongoTemplate"
ref
=
"mongoTemplate"
/>
16
</
bean
>
17
18
<
bean
id
=
"mongoTemplate"
class
=
"org.springframework.data.mongodb.core.MongoTemplate"
>
19
<
constructor-arg
name
=
"mongo"
ref
=
"mongo"
/>
20
<
constructor-arg
name
=
"databaseName"
value
=
"nature"
/>
21
</
bean
>
22
23
<!-- Factory bean that creates the Mongo instance -->
24
<
bean
id
=
"mongo"
class
=
"org.springframework.data.mongodb.core.MongoFactoryBean"
>
25
<
property
name
=
"host"
value
=
"localhost"
/>
26
<
property
name
=
"port"
value
=
"27017"
/>
27
</
bean
>
28
29
<!-- Activate annotation configured components -->
30
<
context:annotation-config
/>
31
32
<!-- Scan components for annotations within the configured package -->
33
<
context:component-scan
base-package
=
"com.orangeslate.naturestore"
>
34
<
context:exclude-filter
type
=
"annotation"
35
expression
=
"org.springframework.context.annotation.Configuration"
/>
36
</
context:component-scan
>
37
38
</
beans
>
- 创建一个测试类。这里我已经创建了一个测试类,并通过ClassPathXmlApplicationContext来初始化他。
01
package
com.orangeslate.naturestore.test;
02
03
import
org.springframework.context.ConfigurableApplicationContext;
04
import
org.springframework.context.support.ClassPathXmlApplicationContext;
05
06
import
com.orangeslate.naturestore.domain.Tree;
07
import
com.orangeslate.naturestore.repository.NatureRepositoryImpl;
08
import
com.orangeslate.naturestore.repository.Repository;
09
10
public
class
MongoTest {
11
12
public
static
void
main(String[] args) {
13
14
ConfigurableApplicationContext context =
new
ClassPathXmlApplicationContext(
15
"classpath:/spring/applicationContext.xml"
);
16
17
Repository repository = context.getBean(NatureRepositoryImpl.
class
);
18
19
// cleanup collection before insertion
20
repository.dropCollection();
21
22
// create collection
23
repository.createCollection();
24
25
repository.saveObject(
new
Tree(
"1"
,
"Apple Tree"
,
10
));
26
27
System.out.println(
"1. "
+ repository.getAllObjects());
28
29
repository.saveObject(
new
Tree(
"2"
,
"Orange Tree"
,
3
));
30
31
System.out.println(
"2. "
+ repository.getAllObjects());
32
33
System.out.println(
"Tree with id 1"
+ repository.getObject(
"1"
));
34
35
repository.updateObject(
"1"
,
"Peach Tree"
);
36
37
System.out.println(
"3. "
+ repository.getAllObjects());
38
39
repository.deleteObject(
"2"
);
40
41
System.out.println(
"4. "
+ repository.getAllObjects());
42
}
43
}
最后,让我们以Java应用程序的方式运行这个示例,我们可以看到如下的输出。第一个方法存储了一个"Apple Tree"。第二个方法存储了一个"Orange Tree"。第三个方法通过id获取一个对象。第四个使用Peach Tree更新对象。最后一个方法删除了第二个对象。
1
|
1. [Person [
id
=1, name=Apple Tree, age=10, category=null]]
|
2
|
2. [Person [
id
=1, name=Apple Tree, age=10, category=null], Person [
id
=2, name=Orange Tree, age=3, category=null]]
|
3
|
Tree with
id
1Person [
id
=1, name=Apple Tree, age=10, category=null]
|
4
|
3. [Person [
id
=1, name=Peach Tree, age=10, category=null], Person [
id
=2, name=Orange Tree, age=3, category=null]]
|
5
|
4. [Person [
id
=1, name=Peach Tree, age=10, category=null]]
|
注:可以在GitHub上下载到源码 。
OSChina.NET 原创翻译/原文链接 。
http://www.oschina.net/question/82993_61815?from=20120729
发表评论
-
JAVA解决大批量导出数据到excel产生内存溢出的方案 (转)
2012-06-15 10:12 0@SuppressWarnings("u ... -
SSH配置多个数据源
2012-03-13 14:41 01. 编写hibernate的数据库配置文 Mysql_hi ... -
HTML字符实体(Character Entities),转义字符串(Escape Sequence)
2012-02-27 10:39 2158为什么要用转义字符串 ... -
使用SMSLib发短信(收集)
2012-02-07 14:54 24011.mysql做后台数据库; 2 ... -
Apache Commons工具集简介
2011-12-27 19:11 986Apache Commons包含了很多开源的工具,用于解决 ... -
转:YouTube 架构学习体会
2011-11-22 15:23 1186YouTube发展迅速,每天超过1亿的视频点击量,但只有很少人 ... -
字符,字节和编码
2011-11-09 16:22 1191摘要:本文介绍了字符与编码的发展过程,相关概念的正确理解。 ... -
Java日期时间操作函数代码
2011-08-13 16:18 1214/** 日期类 * @date ... -
Log4J diy手册
2011-08-01 11:55 15111. Introduction 在开 ... -
深入分析 Java 中的中文编码问题
2011-07-11 17:12 1524几种常见的编码格式 ... -
BufferedImage to InputStream
2011-06-30 20:56 26121URL url = new URL("http:// ... -
Java打包指南-JAR文件包及jar命令详解
2011-06-15 15:54 9118命令行打war包 ja ... -
正则表达式
2011-06-14 17:35 1421匹配中文字符的正则表达式: [\u4e00-\u9fa5] ... -
svn 命令
2011-06-14 15:59 1010svn co svn+ssh://username@116.2 ... -
使用 jsoup 对 HTML 文档进行解析和操作
2011-06-10 10:32 1625jsoup 简介 Java 程序在解析 HTML 文 ... -
linux设置编码
2011-05-20 10:45 1455set character_set_client='utf ... -
HTML中include file标签的用法
2011-05-05 17:02 21461<!-- #include PathType = Fil ... -
下载 中文文件名乱码问题
2011-04-28 09:42 1234private String processFileName( ... -
Install Redis
2011-04-08 10:16 15081. Get wget http://redis.googl ... -
eclipse.ini内存设置
2011-03-25 17:27 1251eclipse配置: -startu ...
相关推荐
使用MongoDB和Spring Data创建一个简单的Java 的CRUD应用示例 包含代码及说明
接下来,我们将使用Spring Data for MongoDB创建一个具备基本CRUD(Create, Read, Update, Delete)功能的Java应用——NatureStore。 1. **添加依赖库**:确保项目的lib目录包含了Spring Data for MongoDB所需的jar...
它提供了一个面向 Spring 的编程模型,简化了 MongoDB 的集成,使得 Java 开发者可以更轻松地进行 CRUD(创建、读取、更新、删除)操作。MongoTemplate 是 Spring Data for MongoDB 提供的一个关键工具,它是一个...
### Spring Data MongoDB中文文档知识点概览 ...总之,**Spring Data MongoDB** 是一个强大的工具,它不仅简化了与 MongoDB 数据库的交互,还提供了一系列实用的功能,使得开发者能够更加高效地开发应用。
Spring Data MongoDB是一个强大的Java库,它为开发人员提供了一种简单的方式来访问和操作MongoDB数据库。这个库是Spring Data框架的一部分,旨在简化数据访问层的实现,尤其在使用NoSQL数据库如MongoDB时。MongoDB...
通过这些内容,可以看出SpringData MongoDB API文档是一个功能全面且内容丰富的资源,它不仅包括了API的使用,还包括了最佳实践和设计指南,旨在帮助开发者高效地使用Spring框架与MongoDB数据库进行交互。
Spring Data MongoDB项目是Spring框架的一部分,它提供了一个方便的API来操作MongoDB数据库,使得开发人员可以更高效地进行数据存储和检索。 **1. Spring Data MongoDB简介** Spring Data MongoDB提供了与MongoDB...
在本实例中,我们将探讨如何使用Spring MVC、Spring Data以及MongoDB来构建一个实际的应用程序。Spring MVC是Spring框架的一部分,用于构建Web应用程序,而Spring Data则是Spring项目下的一个模块,它简化了与各种...
Spring Data MongoDB 是一个用于简化MongoDB数据库操作的框架,它为Spring应用提供了强大的支持,使得开发者可以更加方便地集成和操作非关系型数据库。在这个"spring data mongodb代码参考"中,我们将深入探讨如何...
Spring Data为MongoDB提供了一个强大的抽象层,使得开发者可以轻松地在Java应用中集成和操作MongoDB。 Spring Data MongoDB的核心概念是Repository抽象,它允许开发者定义自定义的查询方法,而无需编写SQL或MongoDB...
《Spring Data MongoDB 1.8.0.RELEASE:深度解析与源码剖析》 Spring Data MongoDB 是 Spring 框架中的一个模块,专门用于简化与 ...对于使用 MongoDB 的 Java 应用来说,Spring Data MongoDB 是一个不可或缺的工具。
Spring Data MongoDB 是 Spring 框架下的一个模块,专为利用 MongoDB 数据库设计,它提供了丰富的抽象层,使得开发者能够以简洁、直观的方式进行数据操作。本文将深入探讨 Spring Data MongoDB 1.2.0.RELEASE 版本中...
接下来,我们创建一个MongoDBRepository的接口,这是Spring Data MongoDB提供的一系列默认操作的基类。例如,假设我们有一个名为`User`的实体类,我们可以定义如下的接口: ```java public interface ...
总的来说,Spring和MongoDB的结合提供了一个高效、灵活且易于使用的数据存储解决方案,适用于那些需要处理大量非结构化数据或半结构化数据的应用程序。学习和掌握这一组合,将有助于提升开发者在现代Web开发中的技能...
Spring Data MongoDB是一个强大的Java库,它是Spring Data框架的一部分,专门设计用于简化MongoDB数据库的访问。MongoDB是一个流行的NoSQL数据库,它以JSON格式存储数据,适合处理大规模、非结构化或半结构化的数据...
Spring Data MongoDB API 是一个强大的Java库,用于简化与MongoDB数据库的交互。它作为Spring Data项目的一部分,提供了统一的编程模型,使得开发人员能够轻松地利用MongoDB的强大功能。Spring Data MongoDB API允许...
Spring MongoDB 是一个强大的Java框架,它允许开发人员利用Spring框架的功能来操作MongoDB数据库。这个压缩包`spring-date-mongodb1.4.2.zip`包含了两个核心的JAR文件:`spring-data-mongodb-1.4.2.RELEASE.jar`和`...
Spring Data MongoDB是Spring框架的一个子项目,它使得与MongoDB的交互变得简单和直观。当将Spring Data与Spring MVC结合时,可以构建出强大的Web应用。 **Spring框架** Spring框架是一个开源的Java平台,用于简化...
Spring Data MongoDB 是 Spring Data 项目的一部分,旨在简化 MongoDB 数据访问,并提供一个一致的编程模型,该模型适用于 Spring Framework 中的所有数据存储技术。Spring Data MongoDB 1.5.4 版本为开发者提供了更...