spring整合- mongodb

jopen 12年前

1.环境

     Jdk:1.6.0_10-rc2

     Spring3.1.2  下载

     依赖jar文件:

  spring整合- mongodb

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;   }  }

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);  }

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();   }  }

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;   }  }
来自: http://blog.csdn.net/java2000_wl/article/details/7983547