Spring4配置MongoDB

首先要导的包:

pom.xml

<!-- mongodb java driver -->
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
            <version>3.4.3</version>
        </dependency>
        <!-- spring data mongodb -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-commons</artifactId>
            <version>1.11.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-mongodb</artifactId>
            <version>1.8.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-commons-core</artifactId>
            <version>1.4.1.RELEASE</version>
        </dependency>

配置文件:mongoDB-config.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:context="http://www.springframework.org/schema/context"
       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.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
		http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.8.xsd
        http://www.springframework.org/schema/data/repository
        http://www.springframework.org/schema/data/repository/spring-repository-1.5.xsd">
    <mongo:mongo-client id="mongoClient" replica-set="127.0.0.1:27017"/>
    <mongo:mongo replica-set="127.0.0.1:27017"/>
    <mongo:db-factory dbname="wenzailong" mongo-ref="mongo"/>
    <mongo:template id="mongoTemplate" db-factory-ref="mongoDbFactory"/>
</beans>
在spring-config.xml中导入该配置文件
<import resource="classpath:mongoDB/mongoDB-config.xml"/>
写一个MOngoDBUtils工具类:
@Component
public class MongoDBUtils {
    private static final Logger logger = LoggerFactory.getLogger(MongoDBUtils.class);
    @Autowired
    private static MongoTemplate mongoTemplate;

    /*根据集合名存数据*/
    public static void insertOneWithCollectionName(Object o,String collectionName) throws NulidexiaomaException {
        try{
            mongoTemplate.insert(o,collectionName);
        }catch (Exception e){
            logger.error("mongoDB:插入数据报错",e);
            throw new NulidexiaomaException("mongoDB:插入数据报错" + e.getMessage());
        }
    }

    /*自动根据对象类型创建集合并存数据*/
    public static void insertOne(Object o) throws NulidexiaomaException {
        try{
            mongoTemplate.insert(o);
        }catch (Exception e){
            logger.error("mongoDB:插入数据报错",e);
            throw new NulidexiaomaException("mongoDB:插入数据报错" + e.getMessage());
        }
    }
    @Resource(name = "mongoTemplate")
    public void setMongoTemplate(MongoTemplate mongoTemplate) {
        MongoDBUtils.mongoTemplate = mongoTemplate;
    }


}
用@Component只是为了让该工具类变成一个bean,让spring管理,注意看下面的实例化属性
 @Resource(name = "mongoTemplate")
    public void setMongoTemplate(MongoTemplate mongoTemplate) {
        MongoDBUtils.mongoTemplate = mongoTemplate;
    }

因为所有的方法都是静态的,而在静态方法中,我们调用了mongoTemplate,所以mongoTemplate属性也必须为静态,静态的实例化只能通过上述的方式。

测试Demo:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring-config.xml")
public class MongoDBTest {
    @Test
    public void insertOneTest(){
        MongoDBDomain mongoDBDomain = new MongoDBDomain();
        mongoDBDomain.setAge("1");
        mongoDBDomain.setName("wzl");
        try {
            MongoDBUtils.insertOne(mongoDBDomain);
            /*MongoDBUtils.insertOneWithCollectionName(a,"wzl");*/
            System.out.println("OK");
        } catch (NulidexiaomaException e) {
            e.printStackTrace();
            System.out.println(e.getMessage());
        }
    }

    class MongoDBDomain{
        String id ;
        String name;
        String age;

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getAge() {
            return age;
        }

        public void setAge(String age) {
            this.age = age;
        }
    }
}
这样就可以了.注意mongoDB存的实体类的id属性不能的Integer类型。





猜你喜欢

转载自blog.csdn.net/qq_32844875/article/details/80895300