ycycoco 发表于 2015-7-5 13:38:30

Spring MongoDB Support

  spring对mongoDB的支持包括以下特征:


[*]mongodb在spring中的配置支持注解 @Configuration和xml的方式
[*]MongoTemplate辅助类扩展了Mongo operations的生产效率,提供了document和pojo类型之间的转换
  
  添加依赖到pom.xml






org.springframework.data
spring-data-mongodb
1.1.0.RELEASE



  
  你可以将日志级别设置成debug来查看更多的日志信息



log4j.category.org.springframework.data.document.mongodb=DEBUG
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %40.40c:%4L - %m%n

  
  app-mongodb.xml




















  Person.java



package com.dempe.summer.person.model;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
/**
* @author: Zheng Dongping
* @version 1.0 date: 2013-12-20
*/
@Document(collection = "person")
public class Person {
@Id
private String id;
private String name;
private Integer 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 Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
How the '_id' field is handled in the mapping layer
  mongoDB默认会为所有的document生成_id字段,MongoMappingConverter类有确定的规则去管理从java类到"_id"字段的映射,
  当一个字段被@Id注解标注,或者这个字段的名字为id,那么这个字段将会为映射成"_id"
  
  
  PersonRepository.javapackage com.dempe.summer.person.persist;



import java.util.List;
import org.bson.types.ObjectId;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.Query;
import com.dempe.summer.person.model.Person;
/**
* @author: Zheng Dongping
* @version 1.0 date: 2013-12-20
*/
public interface PersonRepository extends MongoRepository {
// 这里的?0代表方法里面的第一个参数
@Query("{ 'name':?0}")
public List findByName(String name);
}

  PersonController.java



package com.dempe.summer.person.controller;
import java.util.List;
import javax.inject.Inject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.dempe.summer.person.model.Person;
import com.dempe.summer.person.persist.PersonRepository;
/**
* @author: Zheng Dongping
* @version 1.0 date: 2013-12-20
*/
@Controller
@RequestMapping(value = "/person")
public class PersonController {
@Inject
PersonRepository repository;
@RequestMapping(value = "/test")
@ResponseBody
public String testMongo() {
// repository.deleteAll();
Person person = new Person();
person.setId("12234499");
person.setName("dempe");
person.setAge(3);
repository.save(person);
Person p = new Person();
p.setId("2222");
p.setName("dempe");
p.setAge(4);
repository.save(p);
List person2List = repository.findByName("dempe");
System.out.println("person2:" + person2List.get(0).getName() + person2List.size());
return "success";
}
}

  
  

重写默认的mapping来定制自己的convert
  为了更细粒度的去控制映射的过程,你可以实现MappingMongoConverter来定制自己的自己的convert
  
页: [1]
查看完整版本: Spring MongoDB Support