spring整合mongo(maven工程下):

1、web.xml文件中配置需要加载的配置文件:

    <listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:/datasource/*.xml
classpath:/ibatis/sql-map-client-config.xml
classpath:/context/ctx*.xml
</param-value>
</context-param>

2、datasource文件夹下新建common-config.xml文件,配置mongo数据源:

<?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:mongo="http://www.springframework.org/schema/data/mongo"
xmlns:context="http://www.springframework.org/schema/context"
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"> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="order" value="2" />
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="locations">
<list>
<value>file:${CONFIG_DIR_PATH}/village.properties</value>
<value>file:${CONFIG_DIR_PATH}/mongo.properties</value>
<value>file:${CONFIG_DIR_PATH}/../system-config/jdbc.village.properties</value>
</list>
</property>
</bean> <!-- mongo config -->
<!-- Default bean name is 'mongo' -->
<mongo:mongo id="mongoData" host="${mongo.ip}" port="${mongo.port}">
<mongo:options connections-per-host="${mongo.connections-per-host}"
threads-allowed-to-block-for-connection-multiplier="${mongo.threads-allowed-to-block-for-connection-multiplier}"
connect-timeout="${mongo.connect-timeout}"
max-wait-time="${mongo.max-wait-time}"
auto-connect-retry="${mongo.auto-connect-retry}"
socket-timeout="${mongo.socket-timeout}"
slave-ok="${mongo.slave-ok}"
write-number="${mongo.write-number}"
write-timeout="${mongo.write-timeout}"
write-fsync="${mongo.write-fsync}" />
</mongo:mongo> <!-- <mongo:db-factory dbname="database" mongo-ref="mongoData" /> --> <!-- 用户信息配置 -->
<!-- <bean id="userCredentials" class="org.springframework.data.authentication.UserCredentials">
<constructor-arg name="username" value="userName"/>
<constructor-arg name="password" value="password"/>
</bean> --> <bean id="testMongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongoData" />
<constructor-arg name="databaseName" value="xiaomu_test" />
<!-- <constructor-arg ref="userCredentials" /> -->
</bean> </beans>

3、mongo.properties文件:

#===============================================================
#mongo
#===============================================================
mongo.ip=127.0.0.1
mongo.port=27017
mongo.connections-per-host=2
mongo.max-auto-connect-retry-time=15000L
mongo.threads-allowed-to-block-for-connection-multiplier=4
mongo.connect-timeout=10000
mongo.max-wait-time=15000
mongo.auto-connect-retry=true
mongo.socket-timeout=15000
mongo.slave-ok=true
mongo.write-number=1
mongo.write-timeout=0
mongo.write-fsync=true

4、配置service和dao方法:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="mongoService" class="com.test.service.mongo.impl.MongoServiceImpl">
<property name="mongoDao" ref="mongoDao" />
</bean> <bean id="mongoDao" class="com.test.dao.mongo.impl.MongoDaoImpl">
<property name="testMongoTemplate" ref="testMongoTemplate" />
</bean> </beans>

java调用mongo:

注:所有的collectionName都可用bean的类名代替,表示操作一bean类名命名的collection,插入时直接传入一个bean默认会创建一个与bean同名的collection

增加:

//数据形式为:
/*
{
"name" : "MongoDB",
"type" : "database",
"count" : 1,
"info" : {
x : 203,
y : 102
}
}
*/
BasicDBObject doc = new BasicDBObject("name", "MongoDB")
.append("type", "database")
.append("count", 1)
.append("info", new BasicDBObject("x", 203).append("y", 102));
testMongoTemplate.insert(doc,"testColl");
//testMongoTemplate.insertAll(users); //users是list集合,批量插入

删除:

方式一:
BasicDBObject query = new BasicDBObject("name", "MongoDB");
testMongoTemplate.remove(query, collectionName); 方式二:
Criteria criteria = Criteria.where("age").gt(20);; //年龄大于20
//Criteria criteria = Criteria.where("id").is(20;//年龄等于20
Query query2 = new Query(criteria);
testMongoTemplate.remove(query2, collectionName); 方式三(collection对象方法删除):
DBCollection coll = testMongoTemplate.getCollection(collectionName);//通过collection名称获取collection对象
coll.remove(query);

修改:

//普通修改
Criteria criteria = Criteria.where("id").is(123);
Query query = new Query(criteria);
Update update = Update.update("age", 23).set("name", "xiaomu");
testMongoTemplate.updateFirst(query, update, collectionName);
//testMongoTemplate.updateMulti(query, update, collectionName);//修改多条数据 //根据条件查询出来后 再去修改
Criteria criteria = Criteria.where("id").is(123);
Query query = new Query(criteria);
Update update = Update.update("age",12).set("name", "xiaoli");
testMongoTemplate.findAndModify(query, update, collectionName.getClass());//查询出来后修改
//testMongoTemplate.findAndRemove(query, update, collectionName.getClass());//查询出来后删除

查询:

//1、查询一条数据(通过获取集合用集合删除方法删除)
Set<String> names = testMongoTemplate.getCollectionNames();//获取collection的所有名称
DBCollection coll = testMongoTemplate.getCollection(collectionName);//通过collection名称获取collection对象
BasicDBObject query = new BasicDBObject("name", "MongoDB");
DBObject oneMessage = coll.findOne(query);//查询一条数据 //2、多条数据查询 //查询j不等于3,k大于10的结果
//BasicDBObject query = new BasicDBObject("j", new BasicDBObject("$ne", 3))
// .append("k", new BasicDBObject("$gt", 10)); //查询20 < i <= 30 的结果
//BasicDBObject query = new BasicDBObject("i", new BasicDBObject("$gt", 20).append("$lte", 30)); //多结果查询返回游标
DBCursor cursor = coll.find(query);//不传查询条件表示查询所有集合内容
try {
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
} finally {
cursor.close();
} //查询集合中所有数据
List<? extends String> allResult = testMongoTemplate.findAll(collectionName.getClass());//查询所有 //正则匹配查询
Query query = new Query();
Criteria criteria = Criteria.where("name").regex("^" + "xiaoli");
query.addCriteria(criteria);
testMongoTemplate.find(query, collectionName.getClass()); //分页查询
//分页
Criteria criteria = Criteria.where("age").gt(20);; //年龄大于20
Query query = new Query(criteria);
query.skip(5); //skip跳过,表示分页的起始位置
query.limit(10); //每页显示的条数
testMongoTemplate.find(query, collectionName.getClass());

更过方法请参考api。

spring整合mongo及调用的更多相关文章

  1. spring 整合 mongo

    spring 非常强大,不仅在jdbc访问提供了jdbctemplate,而且在mongo访问上提供了mongoTemplate.闲话不多说,下边开始整合mongoTemplate. ONE: 添加s ...

  2. 像我这样优雅地进行Spring整合MongoDB

    本文重点是要将mongodb与spring整合到项目中去,在实践中发现问题,追踪问题,然后解决问题. 一.准备 Maven.Spring(spring-data-mongodb) spring Dat ...

  3. 使用Spring整合Quartz轻松完成定时任务

    一.背景 上次我们介绍了如何使用Spring Task进行完成定时任务的编写,这次我们使用Spring整合Quartz的方式来再一次实现定时任务的开发,以下奉上开发步骤及注意事项等. 二.开发环境及必 ...

  4. Spring整合Ehcache管理缓存

    前言 Ehcache 是一个成熟的缓存框架,你可以直接使用它来管理你的缓存. Spring 提供了对缓存功能的抽象:即允许绑定不同的缓存解决方案(如Ehcache),但本身不直接提供缓存功能的实现.它 ...

  5. spring整合hibernate

    spring整合hibernate包括三部分:hibernate的配置.hibernate核心对象交给spring管理.事务由AOP控制 好处: 由java代码进行配置,摆脱硬编码,连接数据库等信息更 ...

  6. Spring整合Ehcache管理缓存(转)

    目录 前言 概述 安装 Ehcache的使用 HelloWorld范例 Ehcache基本操作 创建CacheManager 添加缓存 删除缓存 实现基本缓存操作 缓存配置 xml方式 API方式 S ...

  7. Ehcache和Spring整合

    Ehcache是使用Java编写的缓存框架,比较常用的是,整合在Hibernate和MyBatis这种关系型数据库持久框架. 不过现在用NoSQL也比较盛行,要应用Ehcache,整合起来就没法按照那 ...

  8. Spring学习总结(六)——Spring整合MyBatis完整示例

    为了梳理前面学习的内容<Spring整合MyBatis(Maven+MySQL)一>与<Spring整合MyBatis(Maven+MySQL)二>,做一个完整的示例完成一个简 ...

  9. Spring学习总结(五)——Spring整合MyBatis(Maven+MySQL)二

    接着上一篇博客<Spring整合MyBatis(Maven+MySQL)一>继续. Spring的开放性和扩张性在J2EE应用领域得到了充分的证明,与其他优秀框架无缝的集成是Spring最 ...

随机推荐

  1. vim 编辑器常规操作

    所看视频教程:兄弟连Linux云计算视频教程5.1文本编辑器Vim-5.2 插入命令 a:在光标所在字符后插入; A:在光标所在行尾插入; i:在光标所在字符前插入; I:在光标所在字符行行首插入; ...

  2. Thymeleaf学习记录(4)--$/*/#/@语法

    表达式符号 Thymeleaf对于变量的操作主要有$\*\#三种方式: 变量表达式: ${...},是获取容器上下文变量的值. 选择变量表达式: *{...},获取指定的对象中的变量值.如果是单独的对 ...

  3. 一步一步实现web程序信息管理系统之二----后台框架实现跳转登陆页面

    SpringBoot springboot的目的是为了简化spring应用的开发搭建以及开发过程.内部使用了特殊的处理,使得开发人员不需要进行额外繁锁的xml文件配置的编写,其内部包含很多模块的配置只 ...

  4. BZOJ1093 [SCOI2003]字符串折叠

    Description 折叠的定义如下: 1. 一个字符串可以看成它自身的折叠.记作S  S 2. X(S)是X(X>1)个S连接在一起的串的折叠.记作X(S)  SSSS…S(X个S). ...

  5. nodo合并多个mp3文件

    nodo合并多个mp3文件 会使用到node中的fs - 文件系统 import fs from 'fs'; //读取目录下的文件,返回文件名数组[0x2.mp3,f0k.mp3]; const fi ...

  6. 【Html基础】之<h1>~<h6> <p> <br> <hr>

    学习html无从下手,就在w3school的html手册按着教程学习了下. 什么是html? html是指超文本标记语言,即Hyper Text Markup Language html不是一种编程语 ...

  7. pytorch 文本输入处理

    https://blog.csdn.net/nlpuser/article/details/88067167 https://blog.csdn.net/u012436149/article/deta ...

  8. Week1——JavaEE

    本科目标 首先,对我来说自己想走的方向是JavaWeb后台开发,因此JavaEE对我来说也是比较重要的,想学好这门课.进一步巩固自己现有的基础知识,完善自己的项目经验,更加熟悉开发流程.在框架方面我还 ...

  9. restful知识点之五解析器_响应器_分页器

    解析器 request.post:当数据时content-type urlencoded类型时才有数据 当content-type:是formdata时需要从request.body里取数据 requ ...

  10. leetcode Ch3-DFS & Backtracking II

    一.Gray Code class Solution { public: vector<int> grayCode(int n) { vector<}; ) return resul ...