zoukankan      html  css  js  c++  java
  • java操作Mongodb,Spring-data-mongo简单配置

    这段时间一直在用mongodb,但是却没有配置过Spring操作mongodb。

    今天配了下,顺便把代码贴出来。

    官方文档:http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongodb-connectors





    mongodata.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:context="http://www.springframework.org/schema/context"
    	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/data/mongo
              http://www.springframework.org/schema/data/mongo/spring-mongo.xsd
              http://www.springframework.org/schema/context 
    		  http://www.springframework.org/schema/context/spring-context-4.0.xsd">
    
    	<context:component-scan base-package="dao"/>
    
        
        <!-- 一个本机的mongo -->
         <mongo:mongo id="localMongo" host="127.0.0.1" port="27017"/>
         <mongo:db-factory id="localMongoDbFactory" dbname="person" mongo-ref="localMongo"/>
        <bean id="localMongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
            <constructor-arg name="mongoDbFactory"  ref="localMongoDbFactory"/>
        </bean>
        
    </beans>
    

    pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    	<modelVersion>4.0.0</modelVersion>
    	<groupId>demo</groupId>
    	<artifactId>demo</artifactId>
    	<packaging>war</packaging>
    	<version>0.0.1-SNAPSHOT</version>
    	<name>demo Maven Webapp</name>
    	<url>http://maven.apache.org</url>
    	<properties>
    		<spring.version>4.1.6.RELEASE</spring.version>
    	</properties>
    	
    	<dependencies>
    		<dependency>
    			<groupId>junit</groupId>
    			<artifactId>junit</artifactId>
    			<version>4.11</version>
    			<scope>test</scope>
    		</dependency>
    
                    <!-- jackson  -->
            <dependency>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-core-asl</artifactId>
                <version>1.9.13</version>
            </dependency>
            <dependency>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-mapper-asl</artifactId>
                <version>1.9.13</version>
            </dependency>
            <dependency>
    			<groupId>com.fasterxml.jackson.core</groupId>
    			<artifactId>jackson-databind</artifactId>
    			<version>2.4.3</version>
    		</dependency>
    
    			<dependency>
    			    <groupId>org.springframework.data</groupId>
    			    <artifactId>spring-data-mongodb</artifactId>
    			    <!-- 別用1.9版本。。。会报没有getMergedAnnotationAttributes -->
    			    <version>1.7.0.RELEASE</version>
    			</dependency>
    
    			<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-aop</artifactId>
    			<version>${spring.version}</version>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-core</artifactId>
    			<version>${spring.version}</version>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-expression</artifactId>
    			<version>${spring.version}</version>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-beans</artifactId>
    			<version>${spring.version}</version>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-context-support</artifactId>
    			<version>${spring.version}</version>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-context</artifactId>
    			<version>${spring.version}</version>
    		</dependency>
    		
    				<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-test</artifactId>
    			<version>${spring.version}</version>
    		</dependency>
    		
    		<dependency>
    			<groupId>commons-logging</groupId>
    			<artifactId>commons-logging</artifactId>
    			<version>1.2</version>
    		</dependency>
            
            
    	</dependencies>
    </project>
    


    /**
     * 
     */
    package demo;
    
    import java.util.List;
    
    import javax.annotation.Resource;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.data.mongodb.core.MongoTemplate;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    import com.mongodb.DBCollection;
    import com.mongodb.DBCursor;
    
    /**
     * @author
     *
     */
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = {"classpath:mongodata.xml"})
    public class TestSpringDataMongoDB {
    	@Resource
    	private MongoTemplate localMongoTemplate;
    
    	
    	@Test
    	public void testMongoTemplate(){
    		DBCollection  personCon =localMongoTemplate.getCollection("person");//表名,如果没有该表,请用createCollection("person")
    		DBCursor  cursor=personCon.find().limit(2);
    		while(cursor.hasNext()){
    			System.out.println(cursor.next());
    		}
    		
    	}
    	
    }
    

    得到mongoTemplate后就很容易操作了, 增删改查跟在mongo命令窗口差不多。


    数据库、表、表结构

    查询效果



    附上官方的一些例子:

    查找:
    BasicQuery query = new BasicQuery("{ age : { $lt : 50 }, accounts.balance : { $gt : 1000.00 }}");
    List<Person> result = mongoTemplate.find(query, Person.class);
    List<Person> result = mongoTemplate.find(query(where("age").lt(50)
      .and("accounts.balance").gt(1000.00d)), Person.class);

    Point point = new Point(-73.99171, 40.738868);
    List<Venue> venues =
        template.find(new Query(
            Criteria.where("location").nearSphere(point).maxDistance(0.003712240453784)),
            Venue.class);
    
    
    Query query = TextQuery.searching(new TextCriteria().matchingAny("coffee", "cake")).sortByScore();
    List<Document> page = template.find(query, Document.class);

    更新
    WriteResult wr = mongoTemplate.updateMulti(new Query(where("accounts.accountType").is(Account.Type.SAVINGS)),
      new Update().inc("accounts.$.balance", 50.00), Account.class);

    插入
    Person p = new Person("Bob", 33);
    mongoTemplate.insert(p);
    
    Person qp = mongoTemplate.findOne(query(where("age").is(33)), Person.class);


  • 相关阅读:
    HDU
    JQuery知识点总结
    html和css的使用方法以及样式
    面向对象五个基本原则
    【设计模式】【结构型模式】适配器模式
    为什么说Java中只有值传递?
    IntelliJ IDEA快捷键总结
    【设计模式】【创造型模式】单例模式
    【性能】定位现网环境中最耗费CPU的Java线程
    JavaWeb架构发展
  • 原文地址:https://www.cnblogs.com/thewindkee/p/12873265.html
Copyright © 2011-2022 走看看