Spring boot -mongodb

1.更接近原生mongodb
public class MongoApp { 
private static final Log log = LogFactory.getLog(MongoApp.class); 
public static void main(String[] args) throws Exception {
 MongoOperations mongoOps = new MongoTemplate(new MongoClient(), "database"); 
mongoOps.insert(new Person("Joe", 34)); 
log.info(mongoOps.findOne(new Query(where("name").is("Joe")), Person.class)); mongoOps.dropCollection("person"); 
} } 
2.@Configuration public class AppConfig { 
/* * Use the standard Mongo driver API to create a com.mongodb.MongoClient instance. */
public @Bean MongoClient mongoClient() {
return new MongoClient("localhost");
} } 3.@Configuration
public class AppConfig {
/* * Factory bean that creates the com.mongodb.MongoClient instance */
public @Bean MongoClientFactoryBean mongo() {
MongoClientFactoryBean mongo = new MongoClientFactoryBean();
mongo.setHost("localhost"); return mongo; } } 4. http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd

  

5.spring与mongodb的整合
<context:property-placeholder location="classpath:/com/myapp/mongodb/config/mongo.properties"/>

<mongo:mongo-client host="${mongo.host}" port="${mongo.port}">
  <mongo:client-options
     connections-per-host="${mongo.connectionsPerHost}"
     threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
     connect-timeout="${mongo.connectTimeout}"
     max-wait-time="${mongo.maxWaitTime}"
     auto-connect-retry="${mongo.autoConnectRetry}"
     socket-keep-alive="${mongo.socketKeepAlive}"
     socket-timeout="${mongo.socketTimeout}"
     slave-ok="${mongo.slaveOk}"
     write-number="1"
     write-timeout="0"
     write-fsync="true"/>
</mongo:mongo-client>

<mongo:db-factory dbname="database" mongo-ref="mongoClient"/>

<bean id="anotherMongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
  <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
</bean>
MongodbTemplate一旦配置好,是线程安全的的,可以跨多个实例使用
@Configuration
public class AppConfig {

  public @Bean MongoClient mongoClient() {
      return new MongoClient("localhost");
  }

  public @Bean MongoTemplate mongoTemplate() {
      return new MongoTemplate(mongoClient(), "mydatabase");
  }
}

mongodb的构造函数:
MongoTemplate(MongoClient mongo, String databaseName): 
MongoTemplate(MongoDbFactory mongoDbFactory): 
MongoTemplate(MongoDbFactory mongoDbFactory, MongoConverter mongoConverter): 

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

 官方推荐使用MongoOperations.对mongodb进行操作..

public class MongoApp {
  private static final Log log = LogFactory.getLog(MongoApp.class);
  public static void main(String[] args) {
    MongoOperations mongoOps = new MongoTemplate(new SimpleMongoDbFactory(new MongoClient(), "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);
  }
}

 

  

posted @ 2018-08-08 18:41  Adam*DI  阅读(322)  评论(0编辑  收藏  举报