0
点赞
收藏
分享

微信扫一扫

spring mongodb学习

DT_M 2022-12-05 阅读 104


  spring mongodb目前是M3,需要配合的是spring 3.0.5及JDK 1.6下,下面举例子
说明:

1 启动一个mongodb数据库
    ./mongodb-xxxxxxx/bin/mongod --dbpath=/mongodb

2 例子中,把20个Person对象入mongodb数据库,算其平均年龄
  

@Document
public 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 [id=" + personId + ", name=" + name + ", age=" + age + ", home town=" + homeTown + "]";
}

   



3 编写业务逻辑类,调用mongodb,代码如下:


 

@Repository
public 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");
}

举报

相关推荐

0 条评论