这段时间一直在用mongodb,但是却没有配置过Spring操作mongodb。
今天配了下,顺便把代码贴出来。
mongodata.xml
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">
pom.xml
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
demo
demo
war
0.0.1-SNAPSHOT
demo Maven Webapp
http://maven.apache.org
4.1.6.RELEASE
junit
junit
4.11
test
org.codehaus.jackson
jackson-core-asl
1.9.13
org.codehaus.jackson
jackson-mapper-asl
1.9.13
com.fasterxml.jackson.core
jackson-databind
2.4.3
org.springframework.data
spring-data-mongodb
1.7.0.RELEASE
org.springframework
spring-aop
${spring.version}
org.springframework
spring-core
${spring.version}
org.springframework
spring-expression
${spring.version}
org.springframework
spring-beans
${spring.version}
org.springframework
spring-context-support
${spring.version}
org.springframework
spring-context
${spring.version}
org.springframework
spring-test
${spring.version}
commons-logging
commons-logging
1.2
/**
*
*/
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命令窗口差不多。
数据库、表、表结构
查询效果
附上官方的一些例子:
查找:
BasicQueryquery=newBasicQuery("{ age : { $lt : 50 }, accounts.balance : { $gt : 1000.00 }}");Listresult=mongoTemplate.find(query,Person.class);
Listresult=mongoTemplate.find(query(where("age").lt(50).and("accounts.balance").gt(1000.00d)),Person.class);
Pointpoint=newPoint(-73.99171,40.738868);Listvenues=template.find(newQuery(Criteria.where("location").nearSphere(point).maxDistance(0.003712240453784)),Venue.class);Queryquery=TextQuery.searching(newTextCriteria().matchingAny("coffee","cake")).sortByScore();Listpage=template.find(query,Document.class);
更新
WriteResultwr=mongoTemplate.updateMulti(newQuery(where("accounts.accountType").is(Account.Type.SAVINGS)),newUpdate().inc("accounts.$.balance",50.00),Account.class);
插入
Personp=newPerson("Bob",33);mongoTemplate.insert(p);Personqp=mongoTemplate.findOne(query(where("age").is(33)),Person.class);