mongodb集成spring
1:首先需要下载mongodb的java驱动包
https://github.com/mongodb/mongo-java-driver/downloads
2:需要下载spring集成mongodb的包
下载途径:
a:去csdn下
b:去http://projects.spring.io/spring-data-mongodb/ 使用Maven方式下载
c:网上其他地方找
要下载的包如下
spring-data-commons-core-1.2.0.M2.jar
spring-data-mongodb-1.0.0.M4.jar
spring-data-mongodb-cross-store-1.0.0.M4.jar
spring-data-mongodb-log4j-1.0.0.M4.jar
为什么选择很老的1.0.0版本,是因为我的spring框架是3.0.5的,不知道是不是spring版本低了的原因,选择高点的如1.4.0反正会报错
3:ok 包包都⑦了,开始编码了,先说说配置文件
web.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
- <!-- spring配置文件目录-->
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:spring/*.xml</param-value>
- </context-param>
- <listener>
- <listener-class>
- org.springframework.web.context.ContextLoaderListener
- </listener-class>
- </listener>
- </web-app>
application-global.xml
- <?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:aop="http://www.springframework.org/schema/aop"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:mvc="http://www.springframework.org/schema/mvc"
- xmlns:mongo="http://www.springframework.org/schema/data/mongo"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.xsd
- http://www.springframework.org/schema/mvc
- http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
- http://www.springframework.org/schema/data/mongo
- http://www.springframework.org/schema/data/mongo/spring-mongo.xsd">
- <!-- 获取配置文件属性 -->
- <bean id="placeholderConfig"
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="location">
- <value>classpath:db.properties</value>
- </property>
- </bean>
- <!-- Default bean name is 'mongo' -->
- <!-- 连接池配置详细查看http://api.mongodb.org/java/2.7.2/com/mongodb/MongoOptions.html#connectionsPerHost
- 或者http://www.cnblogs.com/huangfox/archive/2012/04/01/2428947.html
- -->
- <mongo:mongo host="${datasource.host}" port="${datasource.port}">
- <mongo:options connections-per-host="10"
- threads-allowed-to-block-for-connection-multiplier="10"
- auto-connect-retry="true" />
- </mongo:mongo>
- <!-- Spring提供的mongodb操作模板-->
- <bean id="mongoTemplate"
- class="org.springframework.data.mongodb.core.MongoTemplate">
- <constructor-arg ref="mongo" />
- <constructor-arg name="databaseName" value="${datasource.dbname}" />
- </bean>
</beans>
- <strong><span style="color:#ff0000;">db.properties</span></strong>
#datasource.host=localhost
datasource.host=12.35.174.48
#datasource.port=27017
datasource.port=9933
datasource.dbname=logDB
datasource.username=test
datasource.passwd=test
4:spring的db操作模板MongoTemplate
- package dao.impl;
- import org.springframework.beans.BeansException;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.ApplicationContextAware;
- import org.springframework.data.mongodb.core.MongoTemplate;
- import com.mongodb.DB;
- public class AbstractBaseMongoTemplete implements ApplicationContextAware {
- protected MongoTemplate mongoTemplate;
- protected DB db;
- /**
- * 设置mongoTemplate
- * @param mongoTemplate the mongoTemplate to set
- */
- public void setMongoTemplate(MongoTemplate mongoTemplate) {
- this.mongoTemplate = mongoTemplate;
- }
- public void setApplicationContext(ApplicationContext applicationContext)
- throws BeansException {
- //System.out.println("ApplicationContextAware开始执行setApplicationContext方法");
- MongoTemplate mongoTemplate = applicationContext.getBean("mongoTemplate", MongoTemplate.class);
- setMongoTemplate(mongoTemplate);
- db=mongoTemplate.getDb();
- }
- }
5:具体操作类接口
- public interface IDbDao {
- /**
- * 插入单个
- * @param obj
- * @return
- */
- public abstract DBObject insert(DBObject obj);
- /**
- * 插入json格式字符串
- * @param jsonStr
- * @return
- */
- public abstract WriteResult insert(String jsonStr);
- /**
- * 批量插入
- * @param list
- */
- public abstract void insertBatch(List<DBObject> list);
- /**
- * 插入json文件
- * @param list
- */
- public abstract void insertFile(String fileName);
- /**
- * 删除单个
- * @param obj
- */
- public abstract void delete(DBObject obj);
- /**
- * 批量删除
- * @param list
- */
- public abstract void deleteBatch(List<DBObject> list);
- /**
- * 修改
- * @param searchFields 要修改的查询条件
- * @param updateFields 修改的值
- */
- public abstract void update(DBObject searchFields,DBObject updateFields);
- /**
- * 按条件查询
- * @return
- */
- public abstract List<BasicDBObject> find();
- /**
- * 按条件查询
- * @param query 查询条件
- * @return
- */
- public abstract List<BasicDBObject> find(DBObject query);
- /**
- * 排序查询
- * @param query
- * @param sort new BasicDBObject("age", true) 则对age字段降序 注意1是升序,-1是降序
- * @param _class 要返回的实体bean类型
- * @return
- */
- public abstract List<BasicDBObject> find(DBObject query,DBObject sort);
- /**
- * 分页查询
- * @param query 查询条件
- * @param start 起始
- * @param limit 每页多少数据
- * @return
- */
- public abstract List<BasicDBObject> find(DBObject query,int start,int limit);
- /**
- * 分页查询
- * @param query 查询条件
- * @param sort 排序
- * @param start 起始
- * @param limit 每页多少数据
- * @return
- */
- public abstract List<BasicDBObject> find(DBObject query,DBObject sort,int start,int limit);
- /**
- * 按条件查询
- * @param _class 要返回的实体bean类型
- * @return
- */
- public abstract List<Object> find(Class _class);
- /**
- * 按条件查询
- * @param query 查询条件
- * @param _class 要返回的实体bean类型
- * @return
- */
- public abstract List<Object> find(DBObject query,Class _class);
- /**
- * 排序查询
- * @param query 查询条件
- * @param sort new BasicDBObject("age", true) 则对age字段降序 注意1是升序,-1是降序
- * @param _class 要返回的实体bean类型
- * @return
- */
- public abstract List<Object> find(DBObject query,DBObject sort,Class _class);
- /**
- * 分页查询
- * @param query 查询条件
- * @param start 起始
- * @param limit 每页多少数据
- * @param _class 要返回的实体bean类型
- * @return
- */
- public abstract List<Object> find(DBObject query,int start,int limit,Class _class);
- /**
- * 分页查询
- * @param query 查询条件
- * @param sort 排序
- * @param start 起始
- * @param limit 每页多少数据
- * @param _class 要返回的实体bean类型
- * @return
- */
- public abstract List<Object> find(DBObject query,DBObject sort,int start,int limit,Class _class);
- /**
- * 按条件查询,返回查询个数
- * @param query 查询条件
- * @return
- */
- public abstract int findCount(DBObject query);
- /**
- * 排序查询,返回查询个数
- * @param query
- * @param sort new BasicDBObject("age", true) 则对age字段降序 注意1是升序,-1是降序
- * @param _class 要返回的实体bean类型
- * @return
- */
- public abstract int findCount(DBObject query,DBObject sort);
- /**
- * 获取总数
- * @param obj
- * @return
- */
- public abstract long getCount(DBObject obj);
- /**
- * 获取总数
- * @param obj
- * @return
- */
- public abstract long getCount();
- /**
- * 利用java驱动自带函数分组查询
- * @param key 用来分组文档的字段
- * @param cond 执行过滤的条件
- * @param initial reduce中使用变量的初始化
- * @param reduce reduce(参数:当前文档和累加器文档.)
- * @param fn
- * @return
- */
- public abstract DBObject group(DBObject key,DBObject cond,DBObject initial,String reduce,String fn );
- /**
- * 使用聚合框架(参考http://docs.mongodb.org/manual/reference/sql-aggregation-comparison/)
- * @param firstDb
- * @param optionDb
- * @return
- */
- public abstract AggregationOutput aggregation(DBObject firstDb,DBObject ...optionDb);
- public abstract DBCollection getCollection();
- /**
- * 创建索引
- * @param obj new BasicDBObject("name", 1)); // 1代表升序 -1代表降序
- */
mongodb集成spring的更多相关文章
- 【原】Spring与MongoDB集成:配置
MongoDB的API提供了DBObject接口来实现BSONObject的操作方法,BasicDBObject是具体实现.但是并没有提供DBObject与BeanObject的转换.在还没有了解到与 ...
- hbase+hadoop+hdfs集群搭建 集成spring
序言 最近公司一个汽车项目想用hbase做存储,然后就有了这篇文字,来,来,来, 带你一起征服hbase,并推荐一本书<hbase权威指南> 这是一本极好的hbase入门书籍,我花了一个晚 ...
- MyBatis6:MyBatis集成Spring事物管理(下篇)
前言 前一篇文章<MyBatis5:MyBatis集成Spring事物管理(上篇)>复习了MyBatis的基本使用以及使用Spring管理MyBatis的事物的做法,本文的目的是在这个的基 ...
- CXF集成Spring实现webservice的发布与请求
CXF集成Spring实现webservice的发布(服务端) 目录结构: 主要代码: package com.cxf.spring.pojo; public class User { int id ...
- Dubbo集成Spring与Zookeeper实例
>>Dubbo最佳实践 使用Dubbo结合Zookeeper和Spring,是使用比较广泛的一种组合,下面参考官方文档,做个简单的示例,一步步搭建一个使用dubbo结合Zookeeper和 ...
- Thymeleaf 集成spring
Thymeleaf 集成spring 如需先了解Thymeleaf的单独使用,请参考<Thymeleaf模板引擎使用>一文. 依赖的jar包 Thymeleaf 已经集成了spring的3 ...
- 06_在web项目中集成Spring
在web项目中集成Spring 一.使用Servlet进行集成测试 1.直接在Servlet 加载Spring 配置文件 ApplicationContext applicationContext = ...
- Hibernate 检索查询的几种方式(HQL,QBC,本地SQL,集成Spring等)
1.非集成Spring hibernate的检索方式,主要有以下五种. 1.导航对象图检索方式.(根据已经加载的对象,导航到其他对象.) 2.OID检索方式.(按照对象的OID来检索对象.) 3.HQ ...
- SpringMVC 3.1集成Spring Security 3.1
这篇算是一个入门文章,昨天看见有网友提问,spring mvc集成spring security 的时候出错,揣测了一下问题木有解决.我就帮忙给搭建了一个集成框架他说可以,他告诉我这样的文章网上少.今 ...
随机推荐
- JavaScript decodeURI() 和 encodeURI() 函数
定义和用法 decodeURI() 函数可对 encodeURI() 函数编码过的 URI 进行解码. 语法 decodeURI(URIstring) 参数 描述 URIstring 必需.一个字符串 ...
- python 操作sqlite数据库
'''SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说 没有独立的维护进程,所有的维护都来自于程序本身. 在python中,使用sqlite3创建数据库的连接,当我们指定的数据库文件不 ...
- iOS 中SQLite数据库操作
在iOS中实现SQLite数据库的操作:1.导入框架(libsqlite3.0.tbd) 2.导入头文件<sqlite3.h> 3.实现数据的增删改查 实现简单 SQLite数据库操作 的 ...
- java.io.IOException: Cannot run program "bash": error=12, Cannot allocate memory
java.io.IOException: Cannot run program , Cannot allocate memory 云服务器运行nutch报出的异常: 解决方案: http://daim ...
- PHP漏洞全解(一)-PHP网站的安全性问题
本文主要介绍针对PHP网站常见的攻击方式,包括常见的sql注入,跨站等攻击类型.同时介绍了PHP的几个重要参数设置.后面的系列文章将站在攻击者的角度,为你揭开PHP安全问题,同时提供相应应对方案. 针 ...
- 为什么Nagios会那么吵?你又能做些什么呢?(1)
如果你受困于 Nagios 的告警洪潮中不能自拔,那么这两篇连载博客就是为你而生的.让我们来详细的阐述下这个问题! 运维人员都有着独立的监控工具,因此会经常受到 Nagios 告警吵闹的影响.很多运维 ...
- hdu 4878 ZCC loves words AC自动机+中国剩余定理+快速幂
题意就不说了. 分析:折腾好几天自己写的代码还是看了别人代码后发现几乎没什么复杂度的差别,可是就是一直超时,后来干脆照着别人写啊,一直WA,就在准备放弃干脆先写这篇博客的时候,又看了一眼WA的代码,发 ...
- session跨域共享解决方案
要让session跨域共享,需要解决三个问题: 1.通过什么方法来传递session_id? 2.通过什么方法来保存session信息? 3.通过什么方法来进行跨域? 一.传递session_id有4 ...
- 对QT的产品,以及QT的一些综合评论 good
QT你不能说他不流行吧, WPS, Wirshark, KDE, dropbox, skype, virtualbox都和qt有关吧, 你想写个跨平台的C++程序, QT是个不错的选择, 普通PC应用 ...
- ptr_fun学习笔记
ptr_fun是将一个普通的函数适配成一个functor,添加上argument type和result type等类型, 其实现如下(例子里面是binary_function,unary_funct ...