spring调用mongodb

1.环境

Jdk:1.6.0_10-rc2

Spring3.1.2  下载

依赖jar文件:

2.相关配置

①.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"
        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/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">  

        <mongo:mongo id="mongo"  host="127.0.0.1" port="27017"   />  

        <bean id="userCredentials" class="org.springframework.data.authentication.UserCredentials">
            <constructor-arg name="username"  value="userName"/>
            <constructor-arg name="password"  value="password"/>
        </bean>  

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

        <bean id="userDao" class="com.x.mongodb.dao.impl.UserDao" />
    </beans>  

②.MongoTemplate  Api

    package com.x.mongodb.dao.support;  

    import org.springframework.beans.BeansException;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
    import org.springframework.data.mongodb.core.MongoTemplate;  

    /**
     * @author <a href="http://blog.csdn.net/java2000_wl">java2000_wl</a>
     * @version <b>1.0</b>
     */
    public abstract class AbstractBaseMongoTemplete implements ApplicationContextAware {  

        protected MongoTemplate mongoTemplate;  

        /**
         * 设置mongoTemplate
         * @param mongoTemplate the mongoTemplate to set
         */
        public void setMongoTemplate(MongoTemplate mongoTemplate) {
            this.mongoTemplate = mongoTemplate;
        }  

        public void setApplicationContext(ApplicationContext applicationContext)
                throws BeansException {
            MongoTemplate mongoTemplate = applicationContext.getBean("mongoTemplate", MongoTemplate.class);
            setMongoTemplate(mongoTemplate);
        }
    }  

    package com.x.mongodb.dao.impl;  

    import java.util.List;  

    import org.springframework.data.mongodb.core.query.Criteria;
    import org.springframework.data.mongodb.core.query.Query;
    import org.springframework.data.mongodb.core.query.Update;  

    import com.x.mongodb.dao.IUserDao;
    import com.x.mongodb.dao.support.AbstractBaseMongoTemplete;
    import com.x.mongodb.entity.User;  

    /**
     * @author <a href="http://blog.csdn.net/java2000_wl">java2000_wl</a>
     * @version <b>1.0</b>
     */
    public class UserDao extends AbstractBaseMongoTemplete implements IUserDao {  

        /**
         * 新增
         * <br>------------------------------<br>
         * @param user
         */
        public void insert(User user) {
            mongoTemplate.insert(user);
        }  

        /**
         * 批量新增
         * <br>------------------------------<br>
         * @param users
         */
        public void insertAll(List<User> users) {
            mongoTemplate.insertAll(users);
        }  

        /**
         * 删除,按主键id, 如果主键的值为null,删除会失败
         * <br>------------------------------<br>
         * @param id
         */
        public void deleteById(String id) {
            User user = new User(id, null, 0);
            mongoTemplate.remove(user);
        }  

        /**
         * 按条件删除
         * <br>------------------------------<br>
         * @param criteriaUser
         */
        public void delete(User criteriaUser) {
            Criteria criteria = Criteria.where("age").gt(criteriaUser.getAge());;
            Query query = new Query(criteria);
            mongoTemplate.remove(query, User.class);
        }  

        /**
         * 删除全部
         * <br>------------------------------<br>
         */
        public void deleteAll() {
            mongoTemplate.dropCollection(User.class);
        }  

        /**
         * 按主键修改,
         * 如果文档中没有相关key 会新增 使用$set修改器
         * <br>------------------------------<br>
         * @param user
         */
        public void updateById(User user) {
            Criteria criteria = Criteria.where("id").is(user.getId());
            Query query = new Query(criteria);
            Update update = Update.update("age", user.getAge()).set("name", user.getName());
            mongoTemplate.updateFirst(query, update, User.class);
        }  

        /**
         * 修改多条
         * <br>------------------------------<br>
         * @param criteriaUser
         * @param user
         */
        public void update(User criteriaUser, User user) {
            Criteria criteria = Criteria.where("age").gt(criteriaUser.getAge());;
            Query query = new Query(criteria);
            Update update = Update.update("name", user.getName()).set("age", user.getAge());
            mongoTemplate.updateMulti(query, update, User.class);
        }  

        /**
         * 根据主键查询
         * <br>------------------------------<br>
         * @param id
         * @return
         */
        public User findById(String id) {
            return mongoTemplate.findById(id, User.class);
        }  

        /**
         * 查询全部
         * <br>------------------------------<br>
         * @return
         */
        public List<User> findAll() {
            return mongoTemplate.findAll(User.class);
        }  

        /**
         * 按条件查询, 分页
         * <br>------------------------------<br>
         * @param criteriaUser
         * @param skip
         * @param limit
         * @return
         */
        public List<User> find(User criteriaUser, int skip, int limit) {
            Query query = getQuery(criteriaUser);
            query.skip(skip);
            query.limit(limit);
            return mongoTemplate.find(query, User.class);
        }  

        /**
         * 根据条件查询出来后 再去修改
         * <br>------------------------------<br>
         * @param criteriaUser  查询条件
         * @param updateUser    修改的值对象
         * @return
         */
        public User findAndModify(User criteriaUser, User updateUser) {
            Query query = getQuery(criteriaUser);
            Update update = Update.update("age", updateUser.getAge()).set("name", updateUser.getName());
            return mongoTemplate.findAndModify(query, update, User.class);
        }  

        /**
         * 查询出来后 删除
         * <br>------------------------------<br>
         * @param criteriaUser
         * @return
         */
        public User findAndRemove(User criteriaUser) {
            Query query = getQuery(criteriaUser);
            return mongoTemplate.findAndRemove(query, User.class);
        }  

        /**
         * count
         * <br>------------------------------<br>
         * @param criteriaUser
         * @return
         */
        public long count(User criteriaUser) {
            Query query = getQuery(criteriaUser);
            return mongoTemplate.count(query, User.class);
        }  

        /**
         *
         * <br>------------------------------<br>
         * @param criteriaUser
         * @return
         */
        private Query getQuery(User criteriaUser) {
            if (criteriaUser == null) {
                criteriaUser = new User();
            }
            Query query = new Query();
            if (criteriaUser.getId() != null) {
                Criteria criteria = Criteria.where("id").is(criteriaUser.getId());
                query.addCriteria(criteria);
            }
            if (criteriaUser.getAge() > 0) {
                Criteria criteria = Criteria.where("age").gt(criteriaUser.getAge());
                query.addCriteria(criteria);
            }
            if (criteriaUser.getName() != null) {
                Criteria criteria = Criteria.where("name").regex("^" + criteriaUser.getName());
                query.addCriteria(criteria);
            }
            return query;
        }
    }  

[java] view plain copy print?

    package com.x.mongodb.dao;  

    import java.util.List;  

    import com.x.mongodb.entity.User;  

    /**
     * @author <a href="http://blog.csdn.net/java2000_wl">java2000_wl</a>
     * @version <b>1.0</b>
     */
    public interface IUserDao {  

        /**
         * 新增
         * <br>------------------------------<br>
         * @param user
         */
        void insert(User user);  

        /**
         * 新增
         * <br>------------------------------<br>
         * @param users
         */
        void insertAll(List<User> users);  

        /**
         * 删除,主键id, 如果主键的值为null,删除会失败
         * <br>------------------------------<br>
         * @param id
         */
        void deleteById(String id);  

        /**
         * 按条件删除
         * <br>------------------------------<br>
         * @param criteriaUser
         */
        void delete(User criteriaUser);  

        /**
         * 删除全部
         * <br>------------------------------<br>
         */
        void deleteAll();  

        /**
         * 修改
         * <br>------------------------------<br>
         * @param user
         */
        void updateById(User user);  

        /**
         * 更新多条
         * <br>------------------------------<br>
         * @param criteriaUser
         * @param user
         */
        void update(User criteriaUser, User user);  

        /**
         * 根据主键查询
         * <br>------------------------------<br>
         * @param id
         * @return
         */
        User findById(String id);  

        /**
         * 查询全部
         * <br>------------------------------<br>
         * @return
         */
        List<User> findAll();  

        /**
         * 按条件查询
         * <br>------------------------------<br>
         * @param criteriaUser
         * @param skip
         * @param limit
         * @return
         */
        List<User> find(User criteriaUser, int skip, int limit);  

        /**
         * 根据条件查询出来后 在去修改
         * <br>------------------------------<br>
         * @param criteriaUser  查询条件
         * @param updateUser    修改的值对象
         * @return
         */
        User findAndModify(User criteriaUser, User updateUser);  

        /**
         * 查询出来后 删除
         * <br>------------------------------<br>
         * @param criteriaUser
         * @return
         */
        User findAndRemove(User criteriaUser);  

        /**
         * count
         * <br>------------------------------<br>
         * @param criteriaUser
         * @return
         */
        long count(User criteriaUser);
    }  

[java] view plain copy print?

    package com.x.mongodb.entity;  

    import java.io.Serializable;
    import java.util.HashMap;
    import java.util.Map;  

    /**
     * @author <a href="http://blog.csdn.net/java2000_wl">java2000_wl</a>
     * @version <b>1.0</b>
     */
    public class User implements Serializable {  

        private static final long serialVersionUID = -5785857960597910259L;  

        private String id;  

        private String name;  

        private int age;  

        /**
         * <br>------------------------------<br>
         */
        public User() {
        }  

        /**
         *
         * <br>------------------------------<br>
         * @param id
         * @param name
         * @param age
         */
        public User(String id, String name, int age) {
            super();
            this.id = id;
            this.name = name;
            this.age = age;
        }  

        /**
         * 获得id
         * @return the id
         */
        public String getId() {
            return id;
        }  

        /**
         * 设置id
         * @param id the id to set
         */
        public void setId(String id) {
            this.id = id;
        }  

        /**
         * 获得name
         * @return the name
         */
        public String getName() {
            return name;
        }  

        /**
         * 设置name
         * @param name the name to set
         */
        public void setName(String name) {
            this.name = name;
        }  

        /**
         * 获得age
         * @return the age
         */
        public int getAge() {
            return age;
        }  

        /**
         * 设置age
         * @param age the age to set
         */
        public void setAge(int age) {
            this.age = age;
        }  

        /**
         * toString
         */
        public String toString() {
            Map<String, String> map = new HashMap<String, String>();
            map.put("id", id);
            map.put("name", name);
            map.put("age", String.valueOf(age));
            return map.toString();
        }
    }  

[java] view plain copy print?

        import java.util.ArrayList;
        import java.util.Collection;
        import java.util.List;  

        import org.junit.Test;
        import org.springframework.context.ApplicationContext;
        import org.springframework.context.support.ClassPathXmlApplicationContext;  

        import com.x.mongodb.dao.IUserDao;
        import com.x.mongodb.entity.User;  

        /**
         * @author <a href="http://blog.csdn.net/java2000_wl">java2000_wl</a>
         * @version <b>1.0</b>
         */
        public class UserDaoTest {  

            /**
             * 新增
             * <br>------------------------------<br>
             */
            @Test
            public void testInsert() {
                getUserDao().insert(new User(null, "testUser", 21));
            }  

            /**
             * 批量新增
             * <br>------------------------------<br>
             */
            @Test
            public void testInsertAll() {
                List<User> list = new ArrayList<User>();
                for (int i = 0; i < 10; i++) {
                    list.add(new User(null, "testUser" + i, 21 + i));
                }
                getUserDao().insertAll(list);
            }  

            /**
             * 根据主键删除
             * <br>------------------------------<br>
             */
            @Test
            public void testDeleteById() {
                String id = "5058184ec85607e42c4bfad8";
                getUserDao().deleteById(id);
            }  

            /**
             * 条件删除
             * <br>------------------------------<br>
             */
            @Test
            public void testDelete() {
                //删除年龄大于25的
                getUserDao().delete(new User(null, null, 25));
            }  

            /**
             * 删除全部
             * <br>------------------------------<br>
             */
            @Test
            public void testDeleteAll() {
                getUserDao().deleteAll();
            }  

            /**
             * 修改  根据id修改
             * <br>------------------------------<br>
             */
            @Test
            public void testUpdateById() {
                getUserDao().updateById(new User("50581c08c856346f02e9842c", "张三", 100));
            }  

            /**
             * 修改多个
             * <br>------------------------------<br>
             */
            @Test
            public void update() {
                //修改年龄大于29岁的 姓名为“王五“
                User criteriaUser = new User(null, null, 29);
                User user = new User(null, "王五", 39);
                getUserDao().update(criteriaUser, user);
            }  

            /**
             * 按主键查询, 如果不存在 返回null
             * <br>------------------------------<br>
             */
            @Test
            public void testFindById() {
                User user = getUserDao().findById("50581c08c856346f02e98425");
                print(user);
            }  

            /**
             * 查询全部
             * <br>------------------------------<br>
             */
            @Test
            public void testFindAll() {
                List<User> list = getUserDao().findAll();
                print(list);
            }  

            /**
             * 按条件查询
             * <br>------------------------------<br>
             */
            @Test
            public void testFind() {
                //查询25岁以上的, 分页
                User criteriaUser = new User(null, null, 20);
                List<User> list = getUserDao().find(criteriaUser, 1, 10);
                print(list);
            }  

            /**
             * 查询出来后  修改
             * <br>------------------------------<br>
             */
            @Test
            public void testFindAndModify() {
                User criteriaUser = new User("50581c08c856346f02e9842d", null, 0);
                User updateUser = new User(null, "张三", 100);
                updateUser = getUserDao().findAndModify(criteriaUser, updateUser);
                print(updateUser);
            }  

            /**
             * 查询出来后 删除
             * <br>------------------------------<br>
             */
            @Test
            public void testFindAndRemove() {
                User criteriaUser = new User("50581c08c856346f02e9842d", null, 0);
                criteriaUser = getUserDao().findAndRemove(criteriaUser);
                print(criteriaUser);
            }  

            /**
             * count
             * <br>------------------------------<br>
             */
            @Test
            public void testCount() {
                User criteriaUser = new User(null, "test", 0);
                long count = getUserDao().count(criteriaUser);
                print(count);
            }  

            public void print(Object object) {
                if (object == null || !(object instanceof Collection)) {
                    System.out.println(object);
                    return;
                }
                List<?> list = (List<?>) object;
                for (Object obj : list) {
                    System.out.println(obj);
                }
            }  

            public IUserDao getUserDao() {
                String configLocations = "applicationContext.xml";
                ApplicationContext applicationContext = new ClassPathXmlApplicationContext(configLocations);
                IUserDao userDao = applicationContext.getBean("userDao", IUserDao.class);
                return userDao;
            }
        }
时间: 2024-10-24 03:40:54

spring调用mongodb的相关文章

Spring Data MongoDB 五:进阶文档查询(分页、Morphia)(二)

Spring Data MongoDB 三:基本文档查询(Query.BasicQuery)(一) 学习MongoDB 六: MongoDB查询(游标操作.游标信息)(三) 一.简介 SpringData  MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的find的操作,我们上一篇介绍了基本文档的查询,我们今天介绍分页查询,分页查询是返回到匹配文档的游标,可以随意修改查询限制.跳跃.和排序顺序的功能. 我

Spring Data MongoDB 二:添加、删除操作

一.简介 Spring  Data  MongoDB 项目提供与MongoDB文档数据库的集成,Spring与Hibernate集成时,Spring提供了org.springframework.orm.hibernate3.HibernateTemplate实现了对数据的CRUD操作, Spring Data  MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD的操作,包括对集成的对象映射文件和PO

[Spring Data MongoDB]学习笔记--MapReduce

mongodb的MapReduce主要包含两个方法:map和reduce. 举个例子,假设现在有下面3条记录 { "_id" : ObjectId("4e5ff893c0277826074ec533"), "x" : [ "a", "b" ] } { "_id" : ObjectId("4e5ff893c0277826074ec534"), "x"

Spring Data MongoDB

用途 快速集成 MongoDB,不用写一行 MongoDB 的 CRUD 语句.而是使用 Spring Data 独有的方法命名方式定义数据库操作,并且可以方便地替换各种数据库,比如 MySQL. 快速开始 (0)开始之前 确保已有可连接的 MongoDB (1)依赖引入 在 build.gradle 中添加如下依赖. buildscript { repositories { mavenCentral() } dependencies { classpath("org.springframewo

互联网架构师视频课程 Dubbo ActiveMQ Spring Netty MongoDB Jvm

互联网架构师视频课程 Dubbo ActiveMQ spring Netty MongoDB Jvm =================================================================== 2016年netty/mina/java nio视频教程java游戏服务器设计教程 互联网架构师教程:http://blog.csdn.net/pplcheer/article/details/71887910 需要的加qq:1225462853,备注:程序员学

[Spring Data MongoDB]学习笔记--建立数据库的连接

1. 有了上一篇的Mongo后,连接数据库我们还需要更多的信息,比如数据库名字,用户名和密码等. 我们可以继续来配置MongoDbFactory的实例. public interface MongoDbFactory { DB getDb() throws DataAccessException; DB getDb(String dbName) throws DataAccessException; } 然后我们可以继续用MongoDbFactory来创建MongoTemplate的实例. pu

Spring Data MongoDB实战(上)

Spring Data MongoDB实战(上) 作者:chszs,版权所有,未经同意,不得转载.博主主页:http://blog.csdn.net/chszs 本文会详细展示Spring Data MongoDB是如何访问MongoDB数据库的.MongoDB是一个开源的文档型NoSQL数据库,而Spring Data MongoDB是Spring Data的模块之一,专用于访问MongoDB数据库.Spring Data MongoDB模块既提供了基于方法名的查询方式,也提供了基于注释的查询

翻译-使用Spring调用SOAP Web Service

原文链接: http://spring.io/guides/gs/consuming-web-service/ 调用SOAP web service 本指南将指导你使用Spring调用一个基于SOAP的web service的整个过程. 指南内容 你将构建一个客户端,使用SOAP用来从远端的基于WSDL的web service获取天气数据.请访问http://wiki.cdyne.com/index.php/CDYNE_Weather进一步获取该天气服务的信息. 该服务根据邮编返回天气预测.你可

[Spring Data MongoDB]学习笔记--牛逼的MongoTemplate

MongoTemplate是数据库和代码之间的接口,对数据库的操作都在它里面. 注:MongoTemplate是线程安全的. MongoTemplate实现了interface MongoOperations,一般推荐使用MongoOperations来进行相关的操作. MongoOperations mongoOps = new MongoTemplate(new SimpleMongoDbFactory(new Mongo(), "database")); MongoDB docu