spring mongodb学习
spring mongodb目前是M3,需要配合的是spring 3.0.5及JDK 1.6下,下面举例子说明:
1 启动一个mongodb数据库
./mongodb-xxxxxxx/bin/mongod --dbpath=/mongodb
2 例子中,把20个Person对象入mongodb数据库,算其平均年龄
@Documentpublic class Person { @Id private String personId; private String name; private String homeTown; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getPersonId() { return personId; } public void setPersonId(final String personId) { this.personId = personId; } public String getName() { return name; } public void setName(final String name) { this.name = name; } public int getAge() { return age; } public void setAge(final int age) { this.age = age; } public String getHomeTown() { return homeTown; } public void setHomeTown(final String homeTown) { this.homeTown = homeTown; } @Override public String toString() { return "Person "; }
3 编写业务逻辑类,调用mongodb,代码如下:
@Repositorypublic class PersonRepository { static final Logger logger = LoggerFactory.getLogger(PersonRepository.class); @Autowired MongoTemplate mongoTemplate; public void logAllPersons() { List<Person> results = mongoTemplate.findAll(Person.class); logger.info("Total amount of persons: {}", results.size()); logger.info("Results: {}", results); } /** * Calculates the average age of a {@link Person}. * * @return the average age */ public int getAvarageAgeOfPerson() { List<Person> results = mongoTemplate.findAll(Person.class); int age = 0; Iterator<Person> personIterator = results.iterator(); while (personIterator.hasNext()) { Person nextPerson = personIterator.next(); age += nextPerson.getAge(); } return age / results.size(); } public void insertPersonWithNameJohnAndRandomAge() { //get random age between 1 and 100 double age = Math.ceil(Math.random() * 100); Person p = new Person("John", (int) age); mongoTemplate.insert(p); } /** * Create a {@link Person} collection if the collection does not already exists */ public void createPersonCollection() { if (!mongoTemplate.collectionExists(Person.class)) { mongoTemplate.createCollection(Person.class); } } /** * Drops the {@link Person} collection if the collection does already exists */ public void dropPersonCollection() { if (mongoTemplate.collectionExists(Person.class)) { mongoTemplate.dropCollection(Person.class); } }
4 配置spring配置文件
<?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" 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"><!-- Activate annotation configured components --><context:annotation-config/><!-- Scan components for annotations within the configured package --><context:component-scan base-package="com.jeroenreijn.mongodb.example"> <context:exclude-filter type="annotation" expression="org.springframework.context.annotation.Configuration"/></context:component-scan><!-- Define the MongoTemplate which handles connectivity with MongoDB --><bean id="mongoTemplate" class="org.springframework.data.document.mongodb.MongoTemplate"> <constructor-arg name="mongo" ref="mongo"/> <constructor-arg name="databaseName" value="mongodb"/></bean><!-- Factory bean that creates the Mongo instance --><bean id="mongo" class="org.springframework.data.document.mongodb.MongoFactoryBean"> <property name="host" value="localhost"/></bean><!-- Use this post processor to translate any MongoExceptions thrown in @Repository annotated classes --><bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/></beans>
5 最后启动的主类
public class MongoDBApp { static final Logger logger = LoggerFactory.getLogger(MongoDBApp.class); public static void main( String[] args ) {logger.info("Bootstrapping MongoDemo application");ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("META-INF/spring/applicationContext.xml"); PersonRepository personRepository = context.getBean(PersonRepository.class); // cleanup person collection before insertion personRepository.dropPersonCollection(); //create person collection personRepository.createPersonCollection(); for(int i=0; i<20; i++) { personRepository.insertPersonWithNameJohnAndRandomAge(); } personRepository.logAllPersons(); logger.info("Avarage age of a person is: {}", personRepository.getAvarageAgeOfPerson()); logger.info("Finished MongoDemo application");}
页:
[1]