1 创建maven工程
2 修改pom.xml
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.6.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.13.0-rc0</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb-cross-store</artifactId>
<version>1.6.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb-log4j</artifactId>
<version>1.6.1.RELEASE</version>
</dependency>
</dependencies>
3 修改application.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:p="http://www.springframework.org/schema/p"
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/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd">
<!-- 用以指定property文件的路径信息
<context:property-placeholder location=""/> -->
<context:component-scan base-package="mongodb.mongodb.dao.impl" />
<!-- replica-set="" 属性表示:副本集
配置如下:
<mongo:mongo id="replicaSetMongo" replica-set="127.0.0.1:27017,localhost:27018"/>
-->
<!-- Default bean name is 'mongo' -->
<mongo:mongo host="127.0.0.1" port="27017" id="mongo01">
<!-- <mongo:options auto-connect-retry="" connect-timeout="" slave-ok="" /> -->
</mongo:mongo>
<!-- mongo的工厂,通过它来取得mongo实例,dbname为mongodb的数据库名,没有的话会自动创建 -->
<mongo:db-factory dbname="myinfo" mongo-ref="mongo01" />
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
</bean>
<!-- 映射转换器 扫描base-package目录 根据注释把它们作为mongodb的一个集合 -->
<mongo:mapping-converter base-package="mongodb.mongodb.form" />
<mongo:repositories base-package="mongodb.mongodb.dao.impl" />
</beans>
4 mongodb.mongodb.form包下定义实体类如下:
package mongodb.mongodb.form;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.CompoundIndex;
import org.springframework.data.mongodb.core.index.CompoundIndexes;
import org.springframework.data.mongodb.core.mapping.Document;
@CompoundIndexes({@CompoundIndex(name="age_idx",def="{'name':1,'title':1}")}) //对name和title创建组合索引
@Document(collection="persons")
public class Persons {
@Id
private String id ;
private String name ;
private String title ;
private int price ;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
5 DAO对象
package mongodb.mongodb.dao;
import java.util.List;
import mongodb.mongodb.form.Persons;
public interface PersonsDao {
public void test();
public void createCollection();
public List<Persons> findList(int skip , int limit);
public Persons findone(String id);
public Persons findByName(String name);
public void insert(Persons persons);
public void update(Persons persons);
}
6 Dao对象的实现
package mongodb.mongodb.dao.impl;
import java.util.List;
import java.util.Set;
import mongodb.mongodb.dao.PersonsDao;
import mongodb.mongodb.form.Persons;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.domain.Sort.Order;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Repository;
@Repository
public class PersonsDaoImpl implements PersonsDao {
public static final Logger logger = LoggerFactory.getLogger(PersonsDaoImpl.class);
@Autowired
private MongoTemplate mongoTemplate ;
public void test() {
// TODO Auto-generated method stub
Set<String> names = this.mongoTemplate.getCollectionNames() ;
for( String name : names ){
System.out.println(name);
}
}
public void createCollection() {
// TODO Auto-generated method stub
if(this.mongoTemplate.collectionExists(Persons.class)){
System.out.println("集合persons不存在,需创建");
this.mongoTemplate.createCollection(Persons.class) ;
}else{
System.out.println("集合persons存在,不需创建");
}
}
public List<Persons> findList(int skip, int limit) {
// TODO Auto-generated method stub
Query query = new Query() ;
query.with(new Sort(new Order(Direction.ASC, "_id"))) ;
return this.mongoTemplate.find(query, Persons.class) ;
}
public Persons findone(String id) {
return this.mongoTemplate.findById(id, Persons.class) ;
}
public Persons findByName(String name) {
// TODO Auto-generated method stub
Query query = new Query() ;
query.addCriteria(new Criteria("name").is(name)) ;
return this.mongoTemplate.findOne(query, Persons.class) ;
}
public void insert(Persons persons) {
// TODO Auto-generated method stub
this.mongoTemplate.insert(persons);
}
public void update(Persons persons) {
// TODO Auto-generated method stub
// this.mongoTemplate.update
}
}
测试:
package mongodb.mongodb;
import mongodb.mongodb.dao.PersonsDao;
import mongodb.mongodb.dao.impl.PersonsDaoImpl;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args ){
ApplicationContext context = new ClassPathXmlApplicationContext("/dispatch-servlet.xml") ;
PersonsDao dao = context.getBean(PersonsDaoImpl.class) ;
dao.test();
}
}
结果(列出数据库myinfo中的所有集合名称):
blog
books
files01
fs.chunks
fs.files
inventory
map_reduce_example
map_reduce_example01
map_reduce_example02
map_reduce_sessions
map_reduec_example
myInfo01
orders
persons
score
scores
sessions
survey
system.indexes