- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章MongoDB整合Spring实例详细讲解(含代码)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
写这篇文章也做了下思考,首先是本人技术欠佳。但就是喜欢研究一些东西。因为在此之前有很多的朋友已经写过类似的,很多我也看过,但是讲解的不够深入。对有些朋友提出的问题不能给出答案。在这里,我根据我目前的能力对其进行整理。并最终运行成功.
在测试过程中出现过一下问题:
1、org/springframework/data/mapping/context/MappingContextAware 。
2、src-resolve: Cannot resolve the name 'repository:repository' to a(n) 'type definition' 。
以上都是版本不匹配引起的。特别是第二个错误我看有些解决时候提到了jpa,但是我这里没有使用jpa后来我是把spring-data-commons的包替换了个版本就不出现了.
我先说下我的开发环境:
myeclipse 6.5 。
MongoDB 2.0.8 。
spring 3.0.4 。
最后就是下面2个(这两个版本不对就容易出现各种各样的,杂七杂八的问题) 这里我就给出我所采用的版本 。
spring-data-document 。
spring-data-commons 。
有所改变所有版本必须要对应好下面是jar下载地址 。
http://www.springsource.org/spring-data/mongodb 。
http://www.springsource.org/spring-data/commons 。
下载版本分别为:
spring-data-commons-dist-1.4.0.M1 。
spring-data-document-1.0.0.M2.zip 。
下面给出我工程的图片 。
然后就开始我们开发之旅吧.
首先新建application.xml配置文件 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
beans
xmlns
=
"http://www.springframework.org/schema/beans"
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:context
=
"http://www.springframework.org/schema/context"
xmlns:mongo
=
"http://www.springframework.org/schema/data/mongo"
xsi:schemaLocation="http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<
mongo:mongo
host
=
"192.168.0.138"
port
=
"27017"
/>
<
bean
id
=
"mongoTemplate"
class
=
"org.springframework.data.document.mongodb.MongoTemplate"
>
<
constructor-arg
ref
=
"mongo"
/>
<
constructor-arg
name
=
"databaseName"
value
=
"db"
/>
<
constructor-arg
name
=
"defaultCollectionName"
value
=
"person"
/>
</
bean
>
<
bean
id
=
"personRepository"
class
=
"com.mongo.dao.impl.PersonRepository"
>
<
property
name
=
"mongoTemplate"
ref
=
"mongoTemplate"
></
property
>
</
bean
>
<
context:annotation-config
/>
</
beans
>
|
然后编写操作mongodb的接口 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
/**
* AbstractRepository.java
*/
package
com.mongo.dao;
import
java.util.List;
import
com.mongo.bean.Person;
/**
* TODO
* @author cuiran
* @version TODO
*/
public
interface
AbstractRepository {
/**
*
*<b>function:</b>添加对象
* @author cuiran
* @createDate 2012-12-12 11:41:30
*/
public
void
insert(Person person);
/**
*
*<b>function:</b>根据ID查找对象
* @author cuiran
* @createDate 2012-12-12 11:41:41
*/
public
Person findOne(String id);
/**
*
*<b>function:</b>查询所有
* @author cuiran
* @createDate 2012-12-12 16:26:06
*/
public
List<Person> findAll();
public
List<Person> findByRegex(String regex);
/**
*
*<b>function:</b>删除指定的ID对象
* @author cuiran
* @createDate 2012-12-12 16:26:16
*/
public
void
removeOne(String id);
/**
*
*<b>function:</b>删除所有
* @author cuiran
* @createDate 2012-12-12 16:25:40
*/
public
void
removeAll();
/**
* 通过ID找到并修改
*<b>function:</b>
* @author cuiran
* @createDate 2012-12-12 16:25:51
*/
public
void
findAndModify(String id);
}
|
再写对应接口的实现类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
/**
* PersonRepository.java
*/
package
com.mongo.dao.impl;
import
java.util.List;
import
java.util.regex.Pattern;
import
org.springframework.data.document.mongodb.MongoTemplate;
import
org.springframework.data.document.mongodb.query.Criteria;
import
org.springframework.data.document.mongodb.query.Query;
import
org.springframework.data.document.mongodb.query.Update;
import
com.mongo.bean.Person;
import
com.mongo.dao.AbstractRepository;
/**
* TODO
* @author cuiran
* @version TODO
*/
public
class
PersonRepository
implements
AbstractRepository {
private
MongoTemplate mongoTemplate;
/* (non-Javadoc)
* @see com.mongo.dao.AbstractRepository#findAll()
*/
@Override
public List<Person> findAll() {
// TODO Auto-generated method stub
return getMongoTemplate().find(new Query(), Person.class);
}
/* (non-Javadoc)
* @see com.mongo.dao.AbstractRepository#findAndModify(java.lang.String)
*/
@Override
public void findAndModify(String id) {
// TODO Auto-generated method stub
//new Query(Criteria.where("id").is(id)), new Update().inc("age", 3)
getMongoTemplate().updateFirst(new Query(Criteria.where("id").is(id)), new Update().inc("age", 3));
}
/* (non-Javadoc)
* @see com.mongo.dao.AbstractRepository#findByRegex(java.lang.String)
*/
@Override
public List<Person> findByRegex(String regex) {
// TODO Auto-generated method stub
Pattern pattern = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
Criteria criteria = new Criteria("name").regex(pattern.toString());
return getMongoTemplate().find(new Query(criteria), Person.class);
}
/* (non-Javadoc)
* @see com.mongo.dao.AbstractRepository#findOne(java.lang.String)
*/
@Override
public Person findOne(String id) {
// TODO Auto-generated method stub
return getMongoTemplate().findOne(new Query(Criteria.where("id").is(id)), Person.class);
}
/* (non-Javadoc)
* @see com.mongo.dao.AbstractRepository#insert(com.mongo.bean.Person)
*/
@Override
public void insert(Person person) {
// TODO Auto-generated method stub
getMongoTemplate().insert(person);
}
/* (non-Javadoc)
* @see com.mongo.dao.AbstractRepository#removeAll()
*/
@Override
public void removeAll() {
// TODO Auto-generated method stub
List<Person> list = this.findAll();
if(list != null){
for(Person person : list){
getMongoTemplate().remove(person);
}
}
}
/* (non-Javadoc)
* @see com.mongo.dao.AbstractRepository#removeOne(java.lang.String)
*/
@Override
public void removeOne(String id) {
// TODO Auto-generated method stub
Criteria criteria = Criteria.where("id").in(id);
if(criteria == null){
Query query = new Query(criteria);
if(query != null && getMongoTemplate().findOne(query, Person.class) != null)
getMongoTemplate().remove(getMongoTemplate().findOne(query, Person.class));
}
}
/**
* @return the mongoTemplate
*/
public MongoTemplate getMongoTemplate() {
return mongoTemplate;
}
/**
* @param mongoTemplate the mongoTemplate to set
*/
public
void
setMongoTemplate(MongoTemplate mongoTemplate) {
this
.mongoTemplate = mongoTemplate;
}
}
|
这里也给出对应Person对象代码 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
/**
* Person.java
*/
package
com.mongo.bean;
import
java.io.Serializable;
/**
* TODO
* @author cuiran
* @version TODO
*/
public
class
Person
implements
Serializable {
/**
*
*/
private
static
final
long
serialVersionUID = 3617931430808763429L;
private
String id;
private
String name;
private
int
age;
public
Person() {
super
();
}
public
Person(String id, String name,
int
age) {
super
();
this
.id = id;
this
.name = name;
this
.age = age;
}
/**
* @return the id
*/
public
String getId() {
return
id;
}
/**
* @param id the id to set
*/
public
void
setId(String id) {
this
.id = id;
}
/**
* @return the name
*/
public
String getName() {
return
name;
}
/**
* @param name the name to set
*/
public
void
setName(String name) {
this
.name = name;
}
/**
* @return the age
*/
public
int
getAge() {
return
age;
}
/**
* @param age the age to set
*/
public
void
setAge(
int
age) {
this
.age = age;
}
/**
*
* @param name
* @param age
*/
public
Person(String name,
int
age) {
super
();
this
.name = name;
this
.age = age;
}
public
String toString() {
return
"Person[id="
+id+
",name="
+name+
",age="
+age+
"]"
;
}
}
|
最后写出我们的测试类开始进行测试 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
/**
* MongoTest.java
*/
package
com.mongo.test;
import
java.util.List;
import
org.apache.commons.logging.Log;
import
org.apache.commons.logging.LogFactory;
import
org.springframework.context.ApplicationContext;
import
org.springframework.context.support.ClassPathXmlApplicationContext;
import
com.mongo.bean.Person;
import
com.mongo.dao.AbstractRepository;
import
com.mongo.dao.impl.PersonRepository;
/**
* TODO
* @author cuiran
* @version TODO
*/
public
class
MongoTest {
private
static
Log log = LogFactory.getLog(MongoTest.
class
.getName());
private
AbstractRepository pr=
null
;
/**
*
*<b>function:</b>
* @author cuiran
* @createDate 2012-12-12 16:08:02
*/
public
void
init(){
log.debug(
"开始启动"
);
ApplicationContext ctx =
new
ClassPathXmlApplicationContext(
"applicationContext.xml"
);
pr= (PersonRepository)ctx.getBean(
"personRepository"
);
}
/**
*
*<b>function:</b>添加
* @author cuiran
* @createDate 2012-12-12 16:11:01
*/
public
void
insert(){
Person p=
new
Person(
"cuiran"
,
27
);
pr.insert(p);
log.debug(
"添加成功"
);
}
/**
*
*<b>function:</b>根据输入的ID查找对象
* @author cuiran
* @createDate 2012-12-12 16:24:10
*/
public
void
findOne(){
String id=
"50c83cb552c2ceb0463177d6"
;
Person p= pr.findOne(id);
log.debug(p);
}
/**
*
*<b>function:</b>查询所有
* @author cuiran
* @createDate 2012-12-12 16:08:54
*/
public
void
listAll(){
List<Person> list=pr.findAll();
log.debug(
"查询结果如下:"
);
for
(Person p:list){
log.debug(p.toString());
}
}
/**
*
*<b>function:</b>测试方法
* @author cuiran
* @createDate 2012-12-12 16:11:37
*/
public
void
start(){
init();
//insert();
//listAll();
findOne();
}
/**
*<b>function:</b>main函数
* @author cuiran
* @createDate 2012-12-12 11:54:30
*/
public
static
void
main(String[] args) {
// TODO Auto-generated method stub
MongoTest t=
new
MongoTest();
t.start();
}
}
|
运行出现一下日志,就没什么问题.
1
2
3
4
5
|
2012-12-12 16:23:59:DEBUG com.mongo.test.MongoTest - 开始启动
2012-12-12 16:23:59:INFO org.springframework.context.support.ClassPathXmlApplicationContext - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@253498: startup date [Wed Dec 12 16:23:59 CST 2012]; root of context hierarchy
2012-12-12 16:23:59:INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [applicationContext.xml]
2012-12-12 16:24:00:INFO org.springframework.beans.factory.support.DefaultListableBeanFactory - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@12a0f6c: defining beans [mongo,mongoTemplate,personRepository,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor]; root of factory hierarchy
2012-12-12 16:24:00:DEBUG com.mongo.test.MongoTest - Person[id=50c83cb552c2ceb0463177d6,name=cuiran,age=27]
|
在此附上demo源码:demo 。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.
原文链接:http://blog.csdn.net/cuiran/article/details/8287204 。
最后此篇关于MongoDB整合Spring实例详细讲解(含代码)的文章就讲到这里了,如果你想了解更多关于MongoDB整合Spring实例详细讲解(含代码)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
前言 这个东西有啥用,好玩? 确实, 好玩归好玩,其实很有使用场景。 可以自己选则一些业务节点触发这个机器人助手的消息推送; 简单举例: 有人给你的系统留下反馈意见了,推送到运营群去; 2.项目部署成
1. JWT 简介 JSON Web Token(JWT) 是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为 JSON 对象在各方之间安全地传输信息。该信息可以被验证和信
我的页面上有多个 ajax 调用,我想将它们合并为一个函数。 目前我在几个地方都有这种类型的功能: function AjaxCallOne () { //do something $.ajax(
我的 Facebook 集成基本上可以在我的应用程序中运行:出现 Facebook 对话框,用户可以选择“允许”或“不允许”。但是,我不明白 API 是如何工作的!我有一个使用此代码的 Activit
我必须将文件夹结构从我的应用程序共享到 OneDrive。 我已经检查了一个驱动器的 sdk,但在那个 sdk 中只能共享文件而不是文件夹,并且没有在该 sdk 中创建文件夹的选项 https://g
我是支付网关集成方面的新手。我必须在我的项目 (CORE PHP) 中集成 CCAvenue 支付网关集成。但是我不知道如何为开发人员测试创建商户帐户,如何获取商户 key 等。我已经进行了研发,但是
我正在尝试将“社交选项”集成到我的应用程序中。 我有 iOS6,但我的想法是有一个适用于 iOS5 的应用程序。使用 Twitter 框架非常简单,并且可以在 r.0 版本和 6.0 版本的设备上运行
我正在尝试将 flurryAds 集成到我的 iPhone 应用程序中,但我无法做到这一点。我导入名为 的 .h 文件 #import "Flurry.h" #import "FlurryAds.h"
我正在尝试在我的网站中实现类似 facebook 的按钮和评论,但我在 IE7 中遇到了评论框问题。 COMMENT USING 下拉框不知何故没有显示其他可用选项。这是我用来实现它的代码片段:
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve th
我正在使用 SOAP API 进行 PayPal 集成(Express Checkout)。在 DoExpressCheckout 调用后,我调用 GetExpressCheckoutDetails。
我正在尝试将 paypal 作为支付网关之一集成到我的应用程序中,但在我点击支付按钮后它会返回以下错误。 错误 java.lang.RuntimeException:无法使用 Intent { cmp
我目前正在尝试将 paypal 结账与我们的在线商店集成。我们正在针对 Sandbox 进行测试。除了 IPN(即时付款通知)之外的所有内容都有效。 我们阅读了很多有关 Paypal 更改其安全模型的
我正在开发一个 android 应用程序,我想在其中集成 facebook 之类的。我正在浏览链接 http://developers.facebook.com/docs/guides/mobile/
所以我正在尝试构建一个集成了 FitBit 的 iOS 应用程序 (Swift 2)。 一旦用户打开“步行”页面,用户应该能够看到他每天的步数。 理想情况下,我们不希望每个用户都注册到 FitBit。
我是集成投递箱的新手,但我不太确定如何生成调用以获取请求 token secret 。 https://www.dropbox.com/developers/reference/api#request
我已经成功集成了 PayPal。一切正常。但我希望我的表格在成功付款后重定向到我的网站。另一个问题:如何从 PayPal 得到回应?这是我的 Paypal 表格。谢谢。 `
我在我的 Android 应用程序中集成了 Paypal 。我有一个主要 Activity - 和关于 Activity ,我在其中显示 Paypal 按钮。关于从主 Activity 访问的 Act
前言: 小编引入的图片和文字描述都是来自于尚硅谷的视频讲解,在此感谢尚硅谷的老师,同时也结合 seata文档官方文档进行整合 项目地址(gitee): https://gitee.com/qine
目录 1. demo project 1.1 接口准备 1.2 配置准备 2. docker 开启远程连接
我是一名优秀的程序员,十分优秀!