[Spring Data MongoDB]學習筆記--牛逼的MongoTemplate


MongoTemplate是數據庫和代碼之間的接口,對數據庫的操作都在它里面。

注:MongoTemplate是線程安全的。

MongoTemplate實現了interface MongoOperations,一般推薦使用MongoOperations來進行相關的操作。

MongoOperations mongoOps = new MongoTemplate(new SimpleMongoDbFactory(new Mongo(), "database"));

 

MongoDB documents和domain classes之間的映射關系是通過實現了MongoConverter這個interface的類來實現的。

默認提供了兩個SimpleMappingConverter(default) 和 MongoMappingConverter,但也可以自己定義。

 

如何創建一個MongoTemplate實例?

1. 通過java code

@Configuration
public class AppConfig {

    public @Bean Mongo mongo() throws Exception {
        return new Mongo("localhost");
    }

    public @Bean MongoTemplate mongoTemplate() throws Exception {
        return new MongoTemplate(mongo(), "mydatabase");//還有其它的初始化方法。
    }
}

2. 通過xml

  <mongo:mongo host="localhost" port="27017"/>
  
  <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg ref="mongo"/>
    <constructor-arg name="databaseName" value="geospatial"/>
  </bean>

 

使用的簡單例子

MongoOperations mongoOps = new MongoTemplate(new SimpleMongoDbFactory(new Mongo(), "database"));

    Person p = new Person("Joe", 34);
    
    // Insert is used to initially store the object into the database.
    mongoOps.insert(p);
    log.info("Insert: " + p);
    
    // Find
    p = mongoOps.findById(p.getId(), Person.class);    
    log.info("Found: " + p);
    
    // Update
    mongoOps.updateFirst(query(where("name").is("Joe")), update("age", 35), Person.class);    
    p = mongoOps.findOne(query(where("name").is("Joe")), Person.class);
    log.info("Updated: " + p);
    
    // Delete
    mongoOps.remove(p);
    
    // Check that deletion worked
    List<Person> people =  mongoOps.findAll(Person.class);
    log.info("Number of people = : " + people.size());

    
    mongoOps.dropCollection(Person.class);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM