欢迎您光临本小站。希望您在这里可以找到自己想要的信息。。。

学习并使用spring-data-mongodb

Java Web water 1780℃ 0评论

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="${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.      */  

转载请注明:学时网 » 学习并使用spring-data-mongodb

喜欢 (0)or分享 (0)

您必须 登录 才能发表评论!