elixiat 发表于 2015-7-8 04:48:26

MongoDB整合Spring

  1.环境
  Jdk:1.6.0_10-rc2
  Spring3.1.2下载
  依赖jar文件:

  2.相关配置
  ①.Spring配置文件
  



view plaincopyprint?

[*]
[*]
[*]      
[*]      
[*]      
[*]      
[*]         
[*]         
[*]      
[*]      
[*]      
[*]         
[*]         
[*]         
[*]      
[*]      
[*]      
[*]
  ②.MongoTemplateApi
  



view plaincopyprint?

[*]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 java2000_wl
[*] * @version 1.0
[*] */
[*]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);
[*]    }
[*]}




view plaincopyprint?

[*]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 java2000_wl
[*] * @version 1.0
[*] */
[*]public class UserDao extends AbstractBaseMongoTemplete implements IUserDao {
[*]
[*]    /**
[*]   * 新增
[*]   * ------------------------------
[*]   * @param user
[*]   */
[*]    public void insert(User user) {
[*]      mongoTemplate.insert(user);
[*]    }
[*]      
[*]    /**
[*]   * 批量新增
[*]   * ------------------------------
[*]   * @param users
[*]   */
[*]    public void insertAll(List users) {
[*]      mongoTemplate.insertAll(users);
[*]    }
[*]      
[*]    /**
[*]   * 删除,按主键id, 如果主键的值为null,删除会失败
[*]   * ------------------------------
[*]   * @param id
[*]   */
[*]    public void deleteById(String id) {
[*]      User user = new User(id, null, 0);
[*]      mongoTemplate.remove(user);
[*]    }
[*]      
[*]    /**
[*]   * 按条件删除
[*]   * ------------------------------
[*]   * @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);
[*]    }
[*]      
[*]    /**
[*]   * 删除全部
[*]   * ------------------------------
[*]   */
[*]    public void deleteAll() {
[*]      mongoTemplate.dropCollection(User.class);
[*]    }
[*]      
[*]    /**
[*]   * 按主键修改,
[*]   * 如果文档中没有相关key 会新增 使用$set修改器
[*]   * ------------------------------
[*]   * @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);
[*]    }
[*]      
[*]    /**
[*]   * 修改多条
[*]   * ------------------------------
[*]   * @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);
[*]    }
[*]      
[*]    /**
[*]   * 根据主键查询
[*]   * ------------------------------
[*]   * @param id
[*]   * @return
[*]   */
[*]    public User findById(String id) {
[*]      return mongoTemplate.findById(id, User.class);
[*]    }
[*]      
[*]    /**
[*]   * 查询全部
[*]   * ------------------------------
[*]   * @return
[*]   */
[*]    public List findAll() {
[*]      return mongoTemplate.findAll(User.class);
[*]    }
[*]      
[*]    /**
[*]   * 按条件查询, 分页
[*]   * ------------------------------
[*]   * @param criteriaUser
[*]   * @param skip
[*]   * @param limit
[*]   * @return
[*]   */
[*]    public List find(User criteriaUser, int skip, int limit) {
[*]      Query query = getQuery(criteriaUser);
[*]      query.skip(skip);
[*]      query.limit(limit);
[*]      return mongoTemplate.find(query, User.class);
[*]    }
[*]      
[*]    /**
[*]   * 根据条件查询出来后 再去修改
[*]   * ------------------------------
[*]   * @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);
[*]    }
[*]      
[*]    /**
[*]   * 查询出来后 删除
[*]   * ------------------------------
[*]   * @param criteriaUser
[*]   * @return
[*]   */
[*]    public User findAndRemove(User criteriaUser) {
[*]      Query query = getQuery(criteriaUser);
[*]      return mongoTemplate.findAndRemove(query, User.class);
[*]    }
[*]      
[*]    /**
[*]   * count
[*]   * ------------------------------
[*]   * @param criteriaUser
[*]   * @return
[*]   */
[*]    public long count(User criteriaUser) {
[*]      Query query = getQuery(criteriaUser);
[*]      return mongoTemplate.count(query, User.class);
[*]    }
[*]
[*]    /**
[*]   *
[*]   * ------------------------------
[*]   * @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;
[*]    }
[*]}




view plaincopyprint?

[*]package com.x.mongodb.dao;
[*]
[*]import java.util.List;
[*]
[*]import com.x.mongodb.entity.User;
[*]
[*]/**
[*] * @author java2000_wl
[*] * @version 1.0
[*] */
[*]public interface IUserDao {
[*]      
[*]    /**
[*]   * 新增
[*]   * ------------------------------
[*]   * @param user
[*]   */
[*]    void insert(User user);
[*]      
[*]    /**
[*]   * 新增
[*]   * ------------------------------
[*]   * @param users
[*]   */
[*]    void insertAll(List users);
[*]      
[*]    /**
[*]   * 删除,主键id, 如果主键的值为null,删除会失败
[*]   * ------------------------------
[*]   * @param id
[*]   */
[*]    void deleteById(String id);
[*]      
[*]    /**
[*]   * 按条件删除
[*]   * ------------------------------
[*]   * @param criteriaUser
[*]   */
[*]    void delete(User criteriaUser);
[*]      
[*]    /**
[*]   * 删除全部
[*]   * ------------------------------
[*]   */
[*]    void deleteAll();
[*]      
[*]    /**
[*]   * 修改
[*]   * ------------------------------
[*]   * @param user
[*]   */
[*]    void updateById(User user);
[*]      
[*]    /**
[*]   * 更新多条
[*]   * ------------------------------
[*]   * @param criteriaUser
[*]   * @param user
[*]   */
[*]    void update(User criteriaUser, User user);
[*]      
[*]    /**
[*]   * 根据主键查询
[*]   * ------------------------------
[*]   * @param id
[*]   * @return
[*]   */
[*]    User findById(String id);
[*]      
[*]    /**
[*]   * 查询全部
[*]   * ------------------------------
[*]   * @return
[*]   */
[*]    List findAll();
[*]      
[*]    /**
[*]   * 按条件查询
[*]   * ------------------------------
[*]   * @param criteriaUser
[*]   * @param skip
[*]   * @param limit
[*]   * @return
[*]   */
[*]    List find(User criteriaUser, int skip, int limit);
[*]      
[*]    /**
[*]   * 根据条件查询出来后 在去修改
[*]   * ------------------------------
[*]   * @param criteriaUser查询条件
[*]   * @param updateUser    修改的值对象
[*]   * @return
[*]   */
[*]    User findAndModify(User criteriaUser, User updateUser);
[*]      
[*]    /**
[*]   * 查询出来后 删除
[*]   * ------------------------------
[*]   * @param criteriaUser
[*]   * @return
[*]   */
[*]    User findAndRemove(User criteriaUser);
[*]      
[*]    /**
[*]   * count
[*]   * ------------------------------
[*]   * @param criteriaUser
[*]   * @return
[*]   */
[*]    long count(User criteriaUser);
[*]}




view plaincopyprint?

[*]package com.x.mongodb.entity;
[*]
[*]import java.io.Serializable;
[*]import java.util.HashMap;
[*]import java.util.Map;
[*]
[*]/**
[*] * @author java2000_wl
[*] * @version 1.0
[*] */
[*]public class User implements Serializable {
[*]
[*]    private static final long serialVersionUID = -5785857960597910259L;
[*]      
[*]    private String id;
[*]      
[*]    private String name;
[*]      
[*]    private int age;
[*]      
[*]    /**
[*]   * ------------------------------
[*]   */
[*]    public User() {
[*]    }
[*]
[*]    /**
[*]   *
[*]   * ------------------------------
[*]   * @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 map = new HashMap();
[*]      map.put("id", id);
[*]      map.put("name", name);
[*]      map.put("age", String.valueOf(age));
[*]      return map.toString();
[*]    }
[*]}




view plaincopyprint?

[*]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 java2000_wl
[*] * @version 1.0
[*] */
[*]public class UserDaoTest {
[*]      
[*]    /**
[*]   * 新增
[*]   * ------------------------------
[*]   */
[*]    @Test
[*]    public void testInsert() {
[*]      getUserDao().insert(new User(null, "testUser", 21));
[*]    }
[*]      
[*]    /**
[*]   * 批量新增
[*]   * ------------------------------
[*]   */
[*]    @Test
[*]    public void testInsertAll() {
[*]      List list = new ArrayList();
[*]      for (int i = 0; i < 10; i++) {
[*]            list.add(new User(null, "testUser" + i, 21 + i));
[*]      }
[*]      getUserDao().insertAll(list);
[*]    }
[*]      
[*]    /**
[*]   * 根据主键删除
[*]   * ------------------------------
[*]   */
[*]    @Test
[*]    public void testDeleteById() {
[*]      String id = "5058184ec85607e42c4bfad8";
[*]      getUserDao().deleteById(id);
[*]    }
[*]      
[*]    /**
[*]   * 条件删除
[*]   * ------------------------------
[*]   */
[*]    @Test
[*]    public void testDelete() {
[*]      //删除年龄大于25的
[*]      getUserDao().delete(new User(null, null, 25));
[*]    }
[*]      
[*]    /**
[*]   * 删除全部
[*]   * ------------------------------
[*]   */
[*]    @Test
[*]    public void testDeleteAll() {
[*]      getUserDao().deleteAll();
[*]    }
[*]      
[*]    /**
[*]   * 修改根据id修改
[*]   * ------------------------------
[*]   */
[*]    @Test
[*]    public void testUpdateById() {
[*]      getUserDao().updateById(new User("50581c08c856346f02e9842c", "张三", 100));
[*]    }
[*]      
[*]    /**
[*]   * 修改多个
[*]   * ------------------------------
[*]   */
[*]    @Test
[*]    public void update() {
[*]      //修改年龄大于29岁的 姓名为“王五“
[*]      User criteriaUser = new User(null, null, 29);
[*]      User user = new User(null, "王五", 39);
[*]      getUserDao().update(criteriaUser, user);
[*]    }
[*]      
[*]    /**
[*]   * 按主键查询, 如果不存在 返回null
[*]   * ------------------------------
[*]   */
[*]    @Test
[*]    public void testFindById() {
[*]      User user = getUserDao().findById("50581c08c856346f02e98425");
[*]      print(user);
[*]    }
[*]      
[*]    /**
[*]   * 查询全部
[*]   * ------------------------------
[*]   */
[*]    @Test
[*]    public void testFindAll() {
[*]      List list = getUserDao().findAll();
[*]      print(list);
[*]    }
[*]      
[*]    /**
[*]   * 按条件查询
[*]   * ------------------------------
[*]   */
[*]    @Test
[*]    public void testFind() {
[*]      //查询25岁以上的, 分页
[*]      User criteriaUser = new User(null, null, 20);
[*]      List list = getUserDao().find(criteriaUser, 1, 10);
[*]      print(list);
[*]    }
[*]      
[*]    /**
[*]   * 查询出来后修改
[*]   * ------------------------------
[*]   */
[*]    @Test
[*]    public void testFindAndModify() {
[*]      User criteriaUser = new User("50581c08c856346f02e9842d", null, 0);
[*]      User updateUser = new User(null, "张三", 100);
[*]      updateUser = getUserDao().findAndModify(criteriaUser, updateUser);
[*]      print(updateUser);
[*]    }
[*]      
[*]    /**
[*]   * 查询出来后 删除
[*]   * ------------------------------
[*]   */
[*]    @Test
[*]    public void testFindAndRemove() {
[*]      User criteriaUser = new User("50581c08c856346f02e9842d", null, 0);
[*]      criteriaUser = getUserDao().findAndRemove(criteriaUser);
[*]      print(criteriaUser);
[*]    }
[*]      
[*]    /**
[*]   * count
[*]   * ------------------------------
[*]   */
[*]    @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.iyunv.com/java2000_wl/article/details/7983547

页: [1]
查看完整版本: MongoDB整合Spring