首页 > 代码库 > mongodb集成spring

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

[html] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  5.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  6.     <!-- spring配置文件目录-->  
  7.     <context-param>  
  8.         <param-name>contextConfigLocation</param-name>  
  9.         <param-value>classpath:spring/*.xml</param-value>  
  10.     </context-param>  
  11.     <listener>  
  12.         <listener-class>  
  13.             org.springframework.web.context.ContextLoaderListener  
  14.         </listener-class>  
  15.     </listener>  
  16.   
  17. </web-app>  


application-global.xml

  

[html] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xmlns:aop="http://www.springframework.org/schema/aop"  
  5.     xmlns:context="http://www.springframework.org/schema/context"  
  6.     xmlns:mvc="http://www.springframework.org/schema/mvc"  
  7.     xmlns:mongo="http://www.springframework.org/schema/data/mongo"  
  8.     xsi:schemaLocation="http://www.springframework.org/schema/beans   
  9.             http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
  10.             http://www.springframework.org/schema/aop   
  11.             http://www.springframework.org/schema/aop/spring-aop-2.5.xsd  
  12.             http://www.springframework.org/schema/context  
  13.             http://www.springframework.org/schema/context/spring-context-3.0.xsd  
  14.             http://www.springframework.org/schema/mvc   
  15.             http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  
  16.             http://www.springframework.org/schema/data/mongo  
  17.             http://www.springframework.org/schema/data/mongo/spring-mongo.xsd">  
  18.   
  19.   
  20.     <!-- 获取配置文件属性 -->  
  21.     <bean id="placeholderConfig"  
  22.         class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
  23.         <property name="location">  
  24.             <value>classpath:db.properties</value>  
  25.         </property>  
  26.     </bean>  
  27.   
  28.     <!-- Default bean name is ‘mongo‘ -->  
  29.     <!-- 连接池配置详细查看http://api.mongodb.org/java/2.7.2/com/mongodb/MongoOptions.html#connectionsPerHost   
  30.         或者http://www.cnblogs.com/huangfox/archive/2012/04/01/2428947.html  
  31.     -->  
  32.     <mongo:mongo host="${datasource.host}" port="${datasource.port}">  
  33.         <mongo:options connections-per-host="10"  
  34.             threads-allowed-to-block-for-connection-multiplier="10"  
  35.             auto-connect-retry="true" />  
  36.     </mongo:mongo>  
  37.   
  38.   
  39.     <!-- Spring提供的mongodb操作模板-->  
  40.     <bean id="mongoTemplate"  
  41.         class="org.springframework.data.mongodb.core.MongoTemplate">  
  42.         <constructor-arg ref="mongo" />  
  43.         <constructor-arg name="databaseName" value=http://www.mamicode.com/"${datasource.dbname}" />  
  44.     </bean>  
  45.       

</beans>


[html] view plaincopy
  1. <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

      具体使用参考百度或者官网http://docs.spring.io/spring-data/data-mongodb/docs/current/api/org/springframework/data/mongodb/core/MongoTemplate.html#getDb()
  
程序启动时,注入MongoTemplate模板

[java] view plaincopy
  1. package dao.impl;  
  2.   
  3. import org.springframework.beans.BeansException;  
  4. import org.springframework.context.ApplicationContext;  
  5. import org.springframework.context.ApplicationContextAware;  
  6. import org.springframework.data.mongodb.core.MongoTemplate;  
  7.   
  8. import com.mongodb.DB;  
  9.   
  10. public class AbstractBaseMongoTemplete  implements ApplicationContextAware {  
  11.     protected MongoTemplate mongoTemplate;    
  12.       
  13.     protected DB db;  
  14.       
  15.     /**  
  16.      * 设置mongoTemplate  
  17.      * @param mongoTemplate the mongoTemplate to set  
  18.      */    
  19.     public void setMongoTemplate(MongoTemplate mongoTemplate) {    
  20.         this.mongoTemplate = mongoTemplate;    
  21.     }    
  22.         
  23.     public void setApplicationContext(ApplicationContext applicationContext)    
  24.             throws BeansException {    
  25.         //System.out.println("ApplicationContextAware开始执行setApplicationContext方法");  
  26.         MongoTemplate mongoTemplate = applicationContext.getBean("mongoTemplate", MongoTemplate.class);    
  27.         setMongoTemplate(mongoTemplate);    
  28.         db=mongoTemplate.getDb();  
  29.     }    
  30. }  
[java] view plaincopy
  1.   
[java] view plaincopy
  1.   

5:具体操作类接口


[java] view plaincopy
  1. public interface  IDbDao {  
  2.   
  3.     /** 
  4.      * 插入单个 
  5.      * @param obj 
  6.      * @return 
  7.      */  
  8.     public abstract DBObject insert(DBObject obj);  
  9.       
  10.     /** 
  11.      * 插入json格式字符串 
  12.      * @param jsonStr 
  13.      * @return 
  14.      */  
  15.     public abstract WriteResult insert(String jsonStr);  
  16.     /** 
  17.      * 批量插入 
  18.      * @param list 
  19.      */  
  20.     public abstract void insertBatch(List<DBObject> list);  
  21.     /** 
  22.      * 插入json文件 
  23.      * @param list 
  24.      */  
  25.     public abstract void insertFile(String fileName);  
  26.   
  27.     /** 
  28.      * 删除单个 
  29.      * @param obj 
  30.      */  
  31.     public abstract void delete(DBObject obj);  
  32.       
  33.     /** 
  34.      * 批量删除 
  35.      * @param list 
  36.      */  
  37.     public abstract void deleteBatch(List<DBObject> list);  
  38.   
  39.       
  40.     /** 
  41.      * 修改 
  42.      * @param searchFields  要修改的查询条件 
  43.      * @param updateFields  修改的值 
  44.      */  
  45.     public abstract void update(DBObject searchFields,DBObject updateFields);  
  46.   
  47.     /** 
  48.      * 按条件查询 
  49.      * @return 
  50.      */  
  51.     public abstract List<BasicDBObject> find();  
  52.       
  53.     /** 
  54.      * 按条件查询 
  55.      * @param query 查询条件 
  56.      * @return 
  57.      */  
  58.     public abstract List<BasicDBObject> find(DBObject query);  
  59.        
  60.     /** 
  61.      * 排序查询 
  62.      * @param query 
  63.      * @param sort   new BasicDBObject("age", true)   则对age字段降序  注意1是升序,-1是降序  
  64.      * @param _class  要返回的实体bean类型 
  65.      * @return 
  66.      */  
  67.     public abstract List<BasicDBObject> find(DBObject query,DBObject sort);  
  68.       
  69.     /** 
  70.      * 分页查询 
  71.      * @param query 查询条件 
  72.      * @param start 起始 
  73.      * @param limit 每页多少数据 
  74.      * @return 
  75.      */  
  76.     public abstract List<BasicDBObject> find(DBObject query,int start,int limit);  
  77.       
  78.     /** 
  79.      * 分页查询 
  80.      * @param query 查询条件 
  81.      * @param sort  排序 
  82.      * @param start 起始 
  83.      * @param limit 每页多少数据 
  84.      * @return 
  85.      */  
  86.     public abstract List<BasicDBObject> find(DBObject query,DBObject sort,int start,int limit);  
  87.       
  88.     /** 
  89.      * 按条件查询 
  90.      * @param _class  要返回的实体bean类型 
  91.      * @return 
  92.      */  
  93.     public abstract List<Object> find(Class _class);  
  94.       
  95.     /** 
  96.      * 按条件查询 
  97.      * @param query 查询条件 
  98.      * @param _class  要返回的实体bean类型 
  99.      * @return 
  100.      */  
  101.     public abstract List<Object> find(DBObject query,Class _class);  
  102.        
  103.     /** 
  104.      * 排序查询 
  105.      * @param query 查询条件 
  106.      * @param sort   new BasicDBObject("age", true)   则对age字段降序  注意1是升序,-1是降序  
  107.      * @param _class  要返回的实体bean类型 
  108.      * @return 
  109.      */  
  110.     public abstract List<Object> find(DBObject query,DBObject sort,Class _class);  
  111.       
  112.     /** 
  113.      * 分页查询 
  114.      * @param query 查询条件 
  115.      * @param start 起始 
  116.      * @param limit 每页多少数据 
  117.      * @param _class  要返回的实体bean类型 
  118.      * @return 
  119.      */  
  120.     public abstract List<Object> find(DBObject query,int start,int limit,Class _class);  
  121.       
  122.     /** 
  123.      * 分页查询 
  124.      * @param query 查询条件 
  125.      * @param sort  排序 
  126.      * @param start 起始 
  127.      * @param limit 每页多少数据 
  128.      * @param _class  要返回的实体bean类型 
  129.      * @return 
  130.      */  
  131.     public abstract List<Object> find(DBObject query,DBObject sort,int start,int limit,Class _class);  
  132.     /** 
  133.      * 按条件查询,返回查询个数 
  134.      * @param query 查询条件 
  135.      * @return 
  136.      */  
  137.     public abstract int findCount(DBObject query);  
  138.        
  139.     /** 
  140.      * 排序查询,返回查询个数 
  141.      * @param query 
  142.      * @param sort   new BasicDBObject("age", true)   则对age字段降序  注意1是升序,-1是降序  
  143.      * @param _class  要返回的实体bean类型 
  144.      * @return 
  145.      */  
  146.     public abstract int findCount(DBObject query,DBObject sort);  
  147.     /** 
  148.      * 获取总数 
  149.      * @param obj 
  150.      * @return 
  151.      */  
  152.     public abstract long getCount(DBObject obj);  
  153.       
  154.     /** 
  155.      * 获取总数 
  156.      * @param obj 
  157.      * @return 
  158.      */  
  159.     public abstract long getCount();  
  160.       
  161.   
  162.     /** 
  163.      * 利用java驱动自带函数分组查询 
  164.      * @param key 用来分组文档的字段 
  165.      * @param cond 执行过滤的条件 
  166.      * @param initial reduce中使用变量的初始化 
  167.      * @param reduce reduce(参数:当前文档和累加器文档.) 
  168.      * @param fn 
  169.      * @return 
  170.      */  
  171.     public abstract DBObject group(DBObject key,DBObject cond,DBObject initial,String reduce,String fn );  
  172.       
  173.       
  174.     /** 
  175.      * 使用聚合框架(参考http://docs.mongodb.org/manual/reference/sql-aggregation-comparison/) 
  176.      * @param firstDb 
  177.      * @param optionDb 
  178.      * @return 
  179.      */  
  180.     public abstract AggregationOutput  aggregation(DBObject firstDb,DBObject ...optionDb);  
  181.       
  182.     public abstract DBCollection getCollection();  
  183.       
  184.     /** 
  185.      * 创建索引 
  186.      * @param obj  new BasicDBObject("name", 1)); // 1代表升序 -1代表降序 
  187.      */  



mongodb集成spring