Spring Data MongoDB简单的增删改查

来源:互联网 发布:网络搞笑猛虎下山图 编辑:程序博客网 时间:2024/05/16 17:18

今天看了 Spring Data MongoDB 的官方文档自己实验性的做了个小例子。

项目结构

这里写图片描述

具体代码

– 简单的Bean类

package org.spring.mongodb.example.bean;/** *  * 2015-10-17 * @category 直接复制的官网上的类 * @author wangpeng * */public class Person {    private String id;    private String name;    private int age;    public Person(String name, int age) {        this.name = name;        this.age = age;    }    public String getId() {        return id;    }    public String getName() {        return name;    }    public int getAge() {        return age;    }    @Override    public String toString() {        return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";    }}
package org.spring.mongodb.example.config;import org.springframework.beans.factory.FactoryBean;import org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper;import org.springframework.data.mongodb.core.convert.MappingMongoConverter;import org.springframework.data.mongodb.core.convert.MongoTypeMapper;public class MyccniceMongoConverterFactoryBean implements FactoryBean<MappingMongoConverter> {    private MappingMongoConverter converter;    public MyccniceMongoConverterFactoryBean(MappingMongoConverter converter) {        this.converter = converter;    }    @Override    public MappingMongoConverter getObject() throws Exception {        // 参数是Type在MongoDB中名字.         // 设置为null的话就不会在保存时自动添加_class属性.        // Spring默认为 DEFAULT_TYPE_KEY = "_class";        MongoTypeMapper typeMapper = new DefaultMongoTypeMapper(null);        converter.setTypeMapper(typeMapper);        return converter;    }    @Override    public Class<?> getObjectType() {        return MappingMongoConverter.class;    }    @Override    public boolean isSingleton() {        return true;    }}

– 简单的测试类

package org.spring.mongodb.example;import org.junit.Before;import org.junit.runner.RunWith;import org.spring.mongodb.example.bean.Person;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;/** *  * 2015-10-17 * @author wangpeng * */@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations="classpath:spring-db.xml")public class BaseSpringTest {    protected Person person;    @Before    public void initApplicationContext(){        person = new Person("Joe", 34);    }}
package org.spring.mongodb.example;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.junit.Test;import org.spring.mongodb.example.bean.Person;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.mongodb.core.MongoTemplate;/** *  * 2015-10-17 * @category 测试SpringMongoDb增删改查 * @author wangpeng * */public class MongoDbTest extends BaseSpringTest{    @Autowired    private MongoTemplate mongoTemplate;    @Test    public void saveTest() {        mongoTemplate.save(person);    }    @Test    public void findTest() {        Person p = mongoTemplate.findOne(query(where("name").is("Joe")), Person.class);        System.out.println(p);    }    @Test    public void updateTest() {        mongoTemplate.updateFirst(query(where("name").is("Joe")), update("age", 35), Person.class);        Person p = mongoTemplate.findOne(query(where("name").is("Joe")), Person.class);        System.out.println(p);    }    @Test    public void removeTest() {        List<Person> people =  mongoTemplate.findAll(Person.class);        System.out.println(people.size());        Person p = mongoTemplate.findOne(query(where("name").is("Joe")), Person.class);        mongoTemplate.remove(p);        people =  mongoTemplate.findAll(Person.class);        System.out.println(people.size());        mongoTemplate.dropCollection(Person.class);    }}

– 两个配置文件

host = 118.123.8.140port = 12345connections-per-host = 8connection-multiplier = 4connect-timeout = 1000max-wait-time = 1500auto-connect-retry = truesocket-keep-alive = truesocket-timeout = 1500slave-ok = turewrite-number = 1write-timeout = 0write-fsync = true
<?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"    xmlns:mongo="http://www.springframework.org/schema/data/mongo"    xsi:schemaLocation="http://www.springframework.org/schema/context          http://www.springframework.org/schema/context/spring-context-3.0.xsd          http://www.springframework.org/schema/data/mongo           http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd          http://www.springframework.org/schema/beans          http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">    <context:component-scan base-package="org.spring.mongodb.example" />    <context:property-placeholder location="classpath:db.properties" />    <mongo:mongo id="mongo" host="${host}" port="${port}">        <mongo:options connections-per-host="${connections-per-host}"            threads-allowed-to-block-for-connection-multiplier="${connection-multiplier}"            connect-timeout="${connect-timeout}" max-wait-time="${max-wait-time}"            auto-connect-retry="${auto-connect-retry}"            socket-keep-alive="${socket-keep-alive}" socket-timeout="${socket-timeout}"            slave-ok="true" write-number="${write-number}"            write-timeout="${write-timeout}" write-fsync="${write-fsync}" />    </mongo:mongo>    <mongo:db-factory id="mongoDbFactory" dbname="imooc" mongo-ref="mongo" />    <mongo:mapping-converter id="mongoConverter" />    <bean id="noClassMongoConverter" class="org.spring.mongodb.example.config.MyccniceMongoConverterFactoryBean">        <constructor-arg name="converter" ref="mongoConverter" />    </bean>    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">        <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />        <constructor-arg name="mongoConverter" ref="noClassMongoConverter" />    </bean></beans>

–pom.xml文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>com.myccnice</groupId>    <artifactId>lottery</artifactId>    <packaging>war</packaging>    <version>0.0.1-SNAPSHOT</version>    <name>lottery Maven Webapp</name>    <url>http://maven.apache.org</url>    <properties>        <jdk.version>1.7</jdk.version>        <spring.version>4.0.9.RELEASE</spring.version>        <spring.mongodb.version>1.7.2.RELEASE</spring.mongodb.version>    </properties>    <dependencies>        <!-- test beggin -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-test</artifactId>            <version>${spring.version}</version>        </dependency>        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>4.9</version>            <scope>test</scope>        </dependency>        <!-- test end -->        <dependency>            <groupId>org.springframework.data</groupId>            <artifactId>spring-data-mongodb</artifactId>            <version>${spring.mongodb.version}</version>        </dependency>    </dependencies>    <repositories>        <repository>            <id>spring-milestone</id>            <name>Spring Maven MILESTONE Repository</name>            <url>http://repo.spring.io/libs-milestone</url>        </repository>    </repositories></project>
0 0