Spring data mongodb 入門

建立一個實體

public class Person {
  @Id
  private String id;
  private String firstname;
  private String lastname;
  private Address address;

  // … getters and setters omitted
}

MongoTemplate(repository的底層)使用的默認序列化機制須要名字id的屬性,做爲文檔的id(_id),如今支持使用的id屬性類型是String、ObjectId和BigInteger。spring

建立Repository

public interface PersonRepository extends PagingAndSortingRepository<Person, Long> {

  // additional custom finder methods go here
}

Spring 配置

xml方式
<?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:mongo="http://www.springframework.org/schema/data/mongo"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/data/mongo
    http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd">

  <mongo:mongo id="mongo" />

  <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg ref="mongo" />
    <constructor-arg value="databaseName" />
  </bean>

  <mongo:repositories base-package="com.acme.*.repositories" />

</beans>

mongo:repositories元素的base-package指定掃描包,Spring在這個包中尋找繼承了MongoRepository的接口,併爲它們建立實體。默認狀況下,mongo:repositories注入名字爲mongoTemplate的MongoTemplate實體,若是不使用默認約定能夠指定mongo-template-ref屬性。mongodb

Java 配置方式

能夠使用@EnableMongoRepositories註解,它與xml命名空間元素的屬性十分類似。若是沒有指定base package屬性,它將默認掃描與使用@EnableMongoRepositories註解相同的包。app

@Configuration
@EnableMongoRepositories
class ApplicationConfig extends AbstractMongoConfiguration {

  @Override
  protected String getDatabaseName() {
    return "e-store";
  }

  @Override
  public Mongo mongo() throws Exception {
    return new Mongo();
  }

  @Override
  protected String getMappingBasePackage() {
    return "com.oreilly.springdata.mongodb"
  }
}
相關文章
相關標籤/搜索