Package com.lichhao.test

Source Code of com.lichhao.test.MongoTemplateTest

package com.lichhao.test;

import static org.junit.Assert.*;
import static org.springframework.data.mongodb.core.query.Criteria.where;
import static org.springframework.data.mongodb.core.query.Query.query;
import static org.springframework.data.mongodb.core.query.Update.update;

import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.spring.mongodb.example.Person;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.FindAndModifyOptions;
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.data.mongodb.core.query.Update;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import static org.hamcrest.Matchers.*;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:spring-config.xml" })
public class MongoTemplateTest {

  private Log log;

  @Autowired
  private MongoTemplate mongoTemplate;

  @Before
  public void setLog() {
    log = LogFactory.getLog(MongoTemplateTest.class);
  }

  @Test
  public void testMongoTemplate() {

    // MongoOperations mongoOps = mongoTemplate;
    // mongoTemplate.dropCollection(Person.class);

    mongoTemplate.dropCollection("person");

    Person p = new Person("lichhao", 23);
    // Insert is used to initially store the object into the database.
    mongoTemplate.insert(p);

    log.info("Insert: " + p); // Find

    p = mongoTemplate.findById(p.getId(), Person.class);

    log.info("Found: " + p); // Update

    assertEquals(23, p.getAge());

    mongoTemplate.updateFirst(query(where("name").is("lichhao")),
        update("age", 35), Person.class);

    p = mongoTemplate.findOne(query(where("name").is("lichhao")),
        Person.class);

    log.info("Updated: " + p); // Delete mongoTemplate.remove(p);

    assertEquals(35, p.getAge());

    // Check that deletion worked
    List<Person> people = mongoTemplate.findAll(Person.class);

    log.info("Number of people = : " + people.size());

    assertEquals(1, people.size());

    // --------------------------------------

    mongoTemplate.insert(new Person("Tom", 21));
    mongoTemplate.insert(new Person("Dick", 22));
    mongoTemplate.insert(new Person("Harry", 23));

    Query queryObj = new Query(Criteria.where("name").is("Harry"));

    Update updateObj = new Update().inc("age", 1);

    // return's old person object
    p = mongoTemplate.findAndModify(queryObj, updateObj, Person.class);

    assertThat(p.getName(), is("Harry"));
    assertThat(p.getAge(), is(23));

    p = mongoTemplate.findOne(queryObj, Person.class);
    assertThat(p.getAge(), is(24));

    // Now return the newly updated document when updating
    p = mongoTemplate.findAndModify(queryObj, updateObj,
        new FindAndModifyOptions().returnNew(true), Person.class);
    assertThat(p.getAge(), is(25));
    // -------------------------------------

    Query queryObj2 = new Query(Criteria.where("name").is("Mary"));
    p = mongoTemplate.findAndModify(
        queryObj2,
        updateObj,
        new FindAndModifyOptions().returnNew(true).upsert(true)
            .remove(false), Person.class);

    assertThat(p.getName(), is("Mary"));
    assertThat(p.getAge(), is(1));

    // mongoTemplate.dropCollection(Person.class);
    mongoTemplate.dropCollection("person");
  }

}
TOP

Related Classes of com.lichhao.test.MongoTemplateTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.