• 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

    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

      

    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>


    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模板

    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. }  
    1.   
    1.   

    5:具体操作类接口


    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.      */  



  • 相关阅读:
    数据库字典
    目录结构-模板目录
    vuex
    innerHTML,innertext,textContent区别
    组件传值
    深拷贝和浅拷贝
    关于element ui头像上传问题
    常用的字符串截取的方法
    接口报错之number值过大问题
    node_modules?
  • 原文地址:https://www.cnblogs.com/weipeng/p/4256045.html
Copyright © 2020-2023  润新知