Spring整合Mongodb并插入数据演示

最近才接触Mongodb,在刚开始完全懵逼到现在熟练使用这个过程中走了很多弯路。

这个演示项目基于maven构建,使用Spring4.3.3、Mongodb版本是3.2、mongo-java-driver 3.3.0、spring-data-mongodb 1.9.3

首先创建一个web项目并添加Maven支持

然后pom.xml中添加如下坐标

  	
	
	    org.springframework
	    spring-context
	    4.3.3.RELEASE
	
	
	
	    org.springframework
	    spring-web
	    4.3.3.RELEASE
	
	
			org.springframework
			spring-webmvc
			4.3.3.RELEASE
			
				
					spring-core
					org.springframework
				
				
					spring-beans
					org.springframework
				
			
		
  	
	
	    org.springframework.data
	    spring-data-mongodb
	    1.9.3.RELEASE
	
	
	
	    org.mongodb
	    mongo-java-driver
	    3.3.0
	



接着创建Spring的配置文件 applicationContext.xml,引入命名空间和如下配置


	
	
	

	
	
	

	
	
		
		
	

创建一个实体类,并插入Mongodb

@Document(collection="person")
public class Person {
	@Id
	private String id;
	private String name;
	private int age;


	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 int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}


这个注解@Document(collection="person"),就是说明这个类映射mongodb中的哪一个集合

spring-data-mongodb中的实体映射是通过MongoMappingConverter这个类实现的。它可以通过注释把java类转换为mongodb的文档。

它有以下几种注释:

  • @Id - 文档的唯一标识,在mongodb中为ObjectId,它是唯一的,通过时间戳+机器标识+进程ID+自增计数器(确保同一秒内产生的Id不会冲突)构成。
  • @Document - 把一个java类声明为mongodb的文档,可以通过collection参数指定这个类对应的文档。
  • @DBRef - 声明类似于关系数据库的关联关系。ps:暂不支持级联的保存功能,当你在本实例中修改了DERef对象里面的值时,单独保存本实例并不能保存DERef引用的对象,它要另外保存,如下面例子的Person和Account。
  • @Indexed - 声明该字段需要索引,建索引可以大大的提高查询效率。
  • @CompoundIndex - 复合索引的声明,建复合索引可以有效地提高多字段的查询效率。
  • @GeoSpatialIndexed - 声明该字段为地理信息的索引。
  • @Transient - 映射忽略的字段,该字段不会保存到mongodb。
  • @PersistenceConstructor - 声明构造函数,作用是把从数据库取出的数据实例化为对象。该构造函数传入的值为从DBObject中取出的数据。

随便写个service和dao和controller来模拟测试,并在mongodb中创建一个数据库springtest

  Spring整合Mongodb并插入数据演示_第1张图片

Dao:

/**
 * dao,注入MongoTemplate,插入数据
 * @author Sweiit
 *
 */
@Repository
public class MongoDao {
	@Resource
	private MongoTemplate mongoTemplate;
	
	public void savePerson(Person person){
		
		this.mongoTemplate.save(person);
	}
}

Service:

@Service
public class MongoService {
	
	@Resource
	private MongoDao mongoDao;
	
	@Test
	public void savePerson(){
		Person person = new Person();
		person.setName("test");
		person.setAge(18);
		this.mongoDao.savePerson(person);
	}
}


Controller:

@Controller
@RequestMapping("/mongo")
public class PersonController {
	
	@Resource
	private MongoService mongoService;
	@RequestMapping("/test.action")
	public void mongotest(){
		this.mongoService.savePerson();
	}
}

最后启动tomcat,打开浏览器,执行 http://localhost:8080/springmongo/mongo/test.action

再来看数据库:

Spring整合Mongodb并插入数据演示_第2张图片

你可能感兴趣的:(MongoDB)