1.环境

Jdk:1.6.0_10-rc2

Spring3.1.2  下载

依赖jar文件:

2.相关配置

①.Spring配置文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:mongo="http://www.springframework.org/schema/data/mongo"
  6. xsi:schemaLocation="
  7. http://www.springframework.org/schema/beans
  8. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  9. http://www.springframework.org/schema/context
  10. http://www.springframework.org/schema/context/spring-context-3.0.xsd
  11. http://www.springframework.org/schema/data/mongo
  12. http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd">
  13. <mongo:mongo id="mongo"  host="127.0.0.1" port="27017"   />
  14. <bean id="userCredentials" class="org.springframework.data.authentication.UserCredentials">
  15. <constructor-arg name="username"  value="userName"/>
  16. <constructor-arg name="password"  value="password"/>
  17. </bean>
  18. <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
  19. <constructor-arg ref="mongo" />
  20. <constructor-arg value="test-mongo" />
  21. <constructor-arg ref="userCredentials" />
  22. </bean>
  23. <bean id="userDao" class="com.x.mongodb.dao.impl.UserDao" />
  24. </beans>

②.MongoTemplate  Api

  1. package com.x.mongodb.dao.support;
  2. import org.springframework.beans.BeansException;
  3. import org.springframework.context.ApplicationContext;
  4. import org.springframework.context.ApplicationContextAware;
  5. import org.springframework.data.mongodb.core.MongoTemplate;
  6. /**
  7. * @author <a href="http://blog.csdn.net/java2000_wl">java2000_wl</a>
  8. * @version <b>1.0</b>
  9. */
  10. public abstract class AbstractBaseMongoTemplete implements ApplicationContextAware {
  11. protected MongoTemplate mongoTemplate;
  12. /**
  13. * 设置mongoTemplate
  14. * @param mongoTemplate the mongoTemplate to set
  15. */
  16. public void setMongoTemplate(MongoTemplate mongoTemplate) {
  17. this.mongoTemplate = mongoTemplate;
  18. }
  19. public void setApplicationContext(ApplicationContext applicationContext)
  20. throws BeansException {
  21. MongoTemplate mongoTemplate = applicationContext.getBean("mongoTemplate", MongoTemplate.class);
  22. setMongoTemplate(mongoTemplate);
  23. }
  24. }
  1. package com.x.mongodb.dao.impl;
  2. import java.util.List;
  3. import org.springframework.data.mongodb.core.query.Criteria;
  4. import org.springframework.data.mongodb.core.query.Query;
  5. import org.springframework.data.mongodb.core.query.Update;
  6. import com.x.mongodb.dao.IUserDao;
  7. import com.x.mongodb.dao.support.AbstractBaseMongoTemplete;
  8. import com.x.mongodb.entity.User;
  9. /**
  10. * @author <a href="http://blog.csdn.net/java2000_wl">java2000_wl</a>
  11. * @version <b>1.0</b>
  12. */
  13. public class UserDao extends AbstractBaseMongoTemplete implements IUserDao {
  14. /**
  15. * 新增
  16. * <br>------------------------------<br>
  17. * @param user
  18. */
  19. public void insert(User user) {
  20. mongoTemplate.insert(user);
  21. }
  22. /**
  23. * 批量新增
  24. * <br>------------------------------<br>
  25. * @param users
  26. */
  27. public void insertAll(List<User> users) {
  28. mongoTemplate.insertAll(users);
  29. }
  30. /**
  31. * 删除,按主键id, 如果主键的值为null,删除会失败
  32. * <br>------------------------------<br>
  33. * @param id
  34. */
  35. public void deleteById(String id) {
  36. User user = new User(id, null, 0);
  37. mongoTemplate.remove(user);
  38. }
  39. /**
  40. * 按条件删除
  41. * <br>------------------------------<br>
  42. * @param criteriaUser
  43. */
  44. public void delete(User criteriaUser) {
  45. Criteria criteria = Criteria.where("age").gt(criteriaUser.getAge());;
  46. Query query = new Query(criteria);
  47. mongoTemplate.remove(query, User.class);
  48. }
  49. /**
  50. * 删除全部
  51. * <br>------------------------------<br>
  52. */
  53. public void deleteAll() {
  54. mongoTemplate.dropCollection(User.class);
  55. }
  56. /**
  57. * 按主键修改,
  58. * 如果文档中没有相关key 会新增 使用$set修改器
  59. * <br>------------------------------<br>
  60. * @param user
  61. */
  62. public void updateById(User user) {
  63. Criteria criteria = Criteria.where("id").is(user.getId());
  64. Query query = new Query(criteria);
  65. Update update = Update.update("age", user.getAge()).set("name", user.getName());
  66. mongoTemplate.updateFirst(query, update, User.class);
  67. }
  68. /**
  69. * 修改多条
  70. * <br>------------------------------<br>
  71. * @param criteriaUser
  72. * @param user
  73. */
  74. public void update(User criteriaUser, User user) {
  75. Criteria criteria = Criteria.where("age").gt(criteriaUser.getAge());;
  76. Query query = new Query(criteria);
  77. Update update = Update.update("name", user.getName()).set("age", user.getAge());
  78. mongoTemplate.updateMulti(query, update, User.class);
  79. }
  80. /**
  81. * 根据主键查询
  82. * <br>------------------------------<br>
  83. * @param id
  84. * @return
  85. */
  86. public User findById(String id) {
  87. return mongoTemplate.findById(id, User.class);
  88. }
  89. /**
  90. * 查询全部
  91. * <br>------------------------------<br>
  92. * @return
  93. */
  94. public List<User> findAll() {
  95. return mongoTemplate.findAll(User.class);
  96. }
  97. /**
  98. * 按条件查询, 分页
  99. * <br>------------------------------<br>
  100. * @param criteriaUser
  101. * @param skip
  102. * @param limit
  103. * @return
  104. */
  105. public List<User> find(User criteriaUser, int skip, int limit) {
  106. Query query = getQuery(criteriaUser);
  107. query.skip(skip);
  108. query.limit(limit);
  109. return mongoTemplate.find(query, User.class);
  110. }
  111. /**
  112. * 根据条件查询出来后 再去修改
  113. * <br>------------------------------<br>
  114. * @param criteriaUser  查询条件
  115. * @param updateUser    修改的值对象
  116. * @return
  117. */
  118. public User findAndModify(User criteriaUser, User updateUser) {
  119. Query query = getQuery(criteriaUser);
  120. Update update = Update.update("age", updateUser.getAge()).set("name", updateUser.getName());
  121. return mongoTemplate.findAndModify(query, update, User.class);
  122. }
  123. /**
  124. * 查询出来后 删除
  125. * <br>------------------------------<br>
  126. * @param criteriaUser
  127. * @return
  128. */
  129. public User findAndRemove(User criteriaUser) {
  130. Query query = getQuery(criteriaUser);
  131. return mongoTemplate.findAndRemove(query, User.class);
  132. }
  133. /**
  134. * count
  135. * <br>------------------------------<br>
  136. * @param criteriaUser
  137. * @return
  138. */
  139. public long count(User criteriaUser) {
  140. Query query = getQuery(criteriaUser);
  141. return mongoTemplate.count(query, User.class);
  142. }
  143. /**
  144. *
  145. * <br>------------------------------<br>
  146. * @param criteriaUser
  147. * @return
  148. */
  149. private Query getQuery(User criteriaUser) {
  150. if (criteriaUser == null) {
  151. criteriaUser = new User();
  152. }
  153. Query query = new Query();
  154. if (criteriaUser.getId() != null) {
  155. Criteria criteria = Criteria.where("id").is(criteriaUser.getId());
  156. query.addCriteria(criteria);
  157. }
  158. if (criteriaUser.getAge() > 0) {
  159. Criteria criteria = Criteria.where("age").gt(criteriaUser.getAge());
  160. query.addCriteria(criteria);
  161. }
  162. if (criteriaUser.getName() != null) {
  163. Criteria criteria = Criteria.where("name").regex("^" + criteriaUser.getName());
  164. query.addCriteria(criteria);
  165. }
  166. return query;
  167. }
  168. }
  1. package com.x.mongodb.dao;
  2. import java.util.List;
  3. import com.x.mongodb.entity.User;
  4. /**
  5. * @author <a href="http://blog.csdn.net/java2000_wl">java2000_wl</a>
  6. * @version <b>1.0</b>
  7. */
  8. public interface IUserDao {
  9. /**
  10. * 新增
  11. * <br>------------------------------<br>
  12. * @param user
  13. */
  14. void insert(User user);
  15. /**
  16. * 新增
  17. * <br>------------------------------<br>
  18. * @param users
  19. */
  20. void insertAll(List<User> users);
  21. /**
  22. * 删除,主键id, 如果主键的值为null,删除会失败
  23. * <br>------------------------------<br>
  24. * @param id
  25. */
  26. void deleteById(String id);
  27. /**
  28. * 按条件删除
  29. * <br>------------------------------<br>
  30. * @param criteriaUser
  31. */
  32. void delete(User criteriaUser);
  33. /**
  34. * 删除全部
  35. * <br>------------------------------<br>
  36. */
  37. void deleteAll();
  38. /**
  39. * 修改
  40. * <br>------------------------------<br>
  41. * @param user
  42. */
  43. void updateById(User user);
  44. /**
  45. * 更新多条
  46. * <br>------------------------------<br>
  47. * @param criteriaUser
  48. * @param user
  49. */
  50. void update(User criteriaUser, User user);
  51. /**
  52. * 根据主键查询
  53. * <br>------------------------------<br>
  54. * @param id
  55. * @return
  56. */
  57. User findById(String id);
  58. /**
  59. * 查询全部
  60. * <br>------------------------------<br>
  61. * @return
  62. */
  63. List<User> findAll();
  64. /**
  65. * 按条件查询
  66. * <br>------------------------------<br>
  67. * @param criteriaUser
  68. * @param skip
  69. * @param limit
  70. * @return
  71. */
  72. List<User> find(User criteriaUser, int skip, int limit);
  73. /**
  74. * 根据条件查询出来后 在去修改
  75. * <br>------------------------------<br>
  76. * @param criteriaUser  查询条件
  77. * @param updateUser    修改的值对象
  78. * @return
  79. */
  80. User findAndModify(User criteriaUser, User updateUser);
  81. /**
  82. * 查询出来后 删除
  83. * <br>------------------------------<br>
  84. * @param criteriaUser
  85. * @return
  86. */
  87. User findAndRemove(User criteriaUser);
  88. /**
  89. * count
  90. * <br>------------------------------<br>
  91. * @param criteriaUser
  92. * @return
  93. */
  94. long count(User criteriaUser);
  95. }
  1. package com.x.mongodb.entity;
  2. import java.io.Serializable;
  3. import java.util.HashMap;
  4. import java.util.Map;
  5. /**
  6. * @author <a href="http://blog.csdn.net/java2000_wl">java2000_wl</a>
  7. * @version <b>1.0</b>
  8. */
  9. public class User implements Serializable {
  10. private static final long serialVersionUID = -5785857960597910259L;
  11. private String id;
  12. private String name;
  13. private int age;
  14. /**
  15. * <br>------------------------------<br>
  16. */
  17. public User() {
  18. }
  19. /**
  20. *
  21. * <br>------------------------------<br>
  22. * @param id
  23. * @param name
  24. * @param age
  25. */
  26. public User(String id, String name, int age) {
  27. super();
  28. this.id = id;
  29. this.name = name;
  30. this.age = age;
  31. }
  32. /**
  33. * 获得id
  34. * @return the id
  35. */
  36. public String getId() {
  37. return id;
  38. }
  39. /**
  40. * 设置id
  41. * @param id the id to set
  42. */
  43. public void setId(String id) {
  44. this.id = id;
  45. }
  46. /**
  47. * 获得name
  48. * @return the name
  49. */
  50. public String getName() {
  51. return name;
  52. }
  53. /**
  54. * 设置name
  55. * @param name the name to set
  56. */
  57. public void setName(String name) {
  58. this.name = name;
  59. }
  60. /**
  61. * 获得age
  62. * @return the age
  63. */
  64. public int getAge() {
  65. return age;
  66. }
  67. /**
  68. * 设置age
  69. * @param age the age to set
  70. */
  71. public void setAge(int age) {
  72. this.age = age;
  73. }
  74. /**
  75. * toString
  76. */
  77. public String toString() {
  78. Map<String, String> map = new HashMap<String, String>();
  79. map.put("id", id);
  80. map.put("name", name);
  81. map.put("age", String.valueOf(age));
  82. return map.toString();
  83. }
  84. }
  1. import java.util.ArrayList;
  2. import java.util.Collection;
  3. import java.util.List;
  4. import org.junit.Test;
  5. import org.springframework.context.ApplicationContext;
  6. import org.springframework.context.support.ClassPathXmlApplicationContext;
  7. import com.x.mongodb.dao.IUserDao;
  8. import com.x.mongodb.entity.User;
  9. /**
  10. * @author <a href="http://blog.csdn.net/java2000_wl">java2000_wl</a>
  11. * @version <b>1.0</b>
  12. */
  13. public class UserDaoTest {
  14. /**
  15. * 新增
  16. * <br>------------------------------<br>
  17. */
  18. @Test
  19. public void testInsert() {
  20. getUserDao().insert(new User(null, "testUser", 21));
  21. }
  22. /**
  23. * 批量新增
  24. * <br>------------------------------<br>
  25. */
  26. @Test
  27. public void testInsertAll() {
  28. List<User> list = new ArrayList<User>();
  29. for (int i = 0; i < 10; i++) {
  30. list.add(new User(null, "testUser" + i, 21 + i));
  31. }
  32. getUserDao().insertAll(list);
  33. }
  34. /**
  35. * 根据主键删除
  36. * <br>------------------------------<br>
  37. */
  38. @Test
  39. public void testDeleteById() {
  40. String id = "5058184ec85607e42c4bfad8";
  41. getUserDao().deleteById(id);
  42. }
  43. /**
  44. * 条件删除
  45. * <br>------------------------------<br>
  46. */
  47. @Test
  48. public void testDelete() {
  49. //删除年龄大于25的
  50. getUserDao().delete(new User(null, null, 25));
  51. }
  52. /**
  53. * 删除全部
  54. * <br>------------------------------<br>
  55. */
  56. @Test
  57. public void testDeleteAll() {
  58. getUserDao().deleteAll();
  59. }
  60. /**
  61. * 修改  根据id修改
  62. * <br>------------------------------<br>
  63. */
  64. @Test
  65. public void testUpdateById() {
  66. getUserDao().updateById(new User("50581c08c856346f02e9842c", "张三", 100));
  67. }
  68. /**
  69. * 修改多个
  70. * <br>------------------------------<br>
  71. */
  72. @Test
  73. public void update() {
  74. //修改年龄大于29岁的 姓名为“王五“
  75. User criteriaUser = new User(null, null, 29);
  76. User user = new User(null, "王五", 39);
  77. getUserDao().update(criteriaUser, user);
  78. }
  79. /**
  80. * 按主键查询, 如果不存在 返回null
  81. * <br>------------------------------<br>
  82. */
  83. @Test
  84. public void testFindById() {
  85. User user = getUserDao().findById("50581c08c856346f02e98425");
  86. print(user);
  87. }
  88. /**
  89. * 查询全部
  90. * <br>------------------------------<br>
  91. */
  92. @Test
  93. public void testFindAll() {
  94. List<User> list = getUserDao().findAll();
  95. print(list);
  96. }
  97. /**
  98. * 按条件查询
  99. * <br>------------------------------<br>
  100. */
  101. @Test
  102. public void testFind() {
  103. //查询25岁以上的, 分页
  104. User criteriaUser = new User(null, null, 20);
  105. List<User> list = getUserDao().find(criteriaUser, 1, 10);
  106. print(list);
  107. }
  108. /**
  109. * 查询出来后  修改
  110. * <br>------------------------------<br>
  111. */
  112. @Test
  113. public void testFindAndModify() {
  114. User criteriaUser = new User("50581c08c856346f02e9842d", null, 0);
  115. User updateUser = new User(null, "张三", 100);
  116. updateUser = getUserDao().findAndModify(criteriaUser, updateUser);
  117. print(updateUser);
  118. }
  119. /**
  120. * 查询出来后 删除
  121. * <br>------------------------------<br>
  122. */
  123. @Test
  124. public void testFindAndRemove() {
  125. User criteriaUser = new User("50581c08c856346f02e9842d", null, 0);
  126. criteriaUser = getUserDao().findAndRemove(criteriaUser);
  127. print(criteriaUser);
  128. }
  129. /**
  130. * count
  131. * <br>------------------------------<br>
  132. */
  133. @Test
  134. public void testCount() {
  135. User criteriaUser = new User(null, "test", 0);
  136. long count = getUserDao().count(criteriaUser);
  137. print(count);
  138. }
  139. public void print(Object object) {
  140. if (object == null || !(object instanceof Collection)) {
  141. System.out.println(object);
  142. return;
  143. }
  144. List<?> list = (List<?>) object;
  145. for (Object obj : list) {
  146. System.out.println(obj);
  147. }
  148. }
  149. public IUserDao getUserDao() {
  150. String configLocations = "applicationContext.xml";
  151. ApplicationContext applicationContext = new ClassPathXmlApplicationContext(configLocations);
  152. IUserDao userDao = applicationContext.getBean("userDao", IUserDao.class);
  153. return userDao;
  154. }
  155. }
      摘自:http://blog.csdn.net/java2000_wl/article/details/7983547

MongoDB整合Spring的更多相关文章

  1. MongoDB 学习(三)MongoDB 和 Spring 整合(Maven)

    一.MongoDB 和 Spring 整合(Maven) 1.相关 jar 包准备 2.用 Maven 创建项目,pom.xml 文件 <project xmlns="http://m ...

  2. SpringBoot第九篇:整合Spring Data JPA

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/10910059.html 版权声明:本文为博主原创文章,转载请附上博文链接! 前言   前面几章, ...

  3. 【Java EE 学习 81】【CXF框架】【CXF整合Spring】

    一.CXF简介 CXF是Apache公司下的项目,CXF=Celtix+Xfire:它支持soap1.1.soap1.2,而且能够和spring进行快速无缝整合. 另外jax-ws是Sun公司发布的一 ...

  4. Mybatis整合Spring

    根据官方的说法,在ibatis3,也就是Mybatis3问世之前,Spring3的开发工作就已经完成了,所以Spring3中还是没有对Mybatis3的支持.因此由Mybatis社区自己开发了一个My ...

  5. mybatis入门_一对多,多对多映射以及整合spring框架

    一.一对多映射. 1.1 一对多映射之根据多的一方关联查询一的一方 示例:查询出具体的订单信息,同时也查询出来订单的用户信息. 引入的订单表如下所示: 框选出来的为具体的外键. 订单的Pojo类如下所 ...

  6. 《SSM框架搭建》三.整合spring web

    感谢学习http://blog.csdn.net/zhshulin/article/details/37956105#,还是修改了spring到最新的版本和接口开发示例 根据前一篇日志,已经有了myb ...

  7. Maven 整合 spring profile实现多环境自动切换

    Maven 整合 spring profile实现多环境自动切换 时间:2014-03-19 15:32来源:Internet 作者:Internet 点击:525次 profile主要用在项目多环境 ...

  8. TinyFrame续篇:整合Spring IOC实现依赖注入

    上一篇主要讲解了如何搭建基于CodeFirst的ORM,并且在章节末我们获取了上下文对象的实例:BookContext.这节主要承接上一篇,来讲解如何整合Spring IOC容器实现控制反转,依赖注入 ...

  9. Ehcache 整合Spring 使用页面、对象缓存

    Ehcache 整合Spring 使用页面.对象缓存 Ehcache在很多项目中都出现过,用法也比较简单.一 般的加些配置就可以了,而且Ehcache可以对页面.对象.数据进行缓存,同时支持集群/分布 ...

随机推荐

  1. win7任务栏还原为xp样式

    win7的确是非常强大的操作系统,值得一提的是超级任务栏,非常新颖,不过,不是很适应win7的超级任务栏,今天,我们恢复win7超级任务栏还原xp任务栏. 方法/步骤: 1.在win7超级任务栏空白处 ...

  2. Part 2: Oracle E-Business Suite on Cloud FAQ

    Running Oracle E-Business Suite on Oracle Cloud is simple, but it doesn't take too much effort to co ...

  3. Eclipse:Cannot complete the install because of a conflicting dependency.问题解决

    今天尝试在线更新ADT(22到23)的时候,遇到了这么个问题,从错误提示中初步看起来是存在引用的冲突: 估计大家在把22升级到23的时候都会遇上这个问题,新旧版冲突,感觉像是ADT自己的bug. 其实 ...

  4. MINE

    MINE MINE is an app for the nearly 1.2 million songwriters, composers, musicians, and publishers who ...

  5. Sidekiq任务堵塞问题

    今天发现服务器上的sidekiq 线程全忙.队列里任务积累了好多. sidekiq里的任务基本都是爬虫脚本,都需要请求外部网站.但是有些网站的响应时间或者读取时间太久,一直一直卡在那里.使得后面的任务 ...

  6. 导出excel和PDF小结 vba

    最近接触了一个关于Access工具的项目,所以整理下需要使用的方法. 功能要求简介: 1.将数据表中的数据导出到excel和PDF 2.并根据某个字段名称分sheet输出. 3.无模板方式 方案简介: ...

  7. ruby -- 基础学习(六)时间计算

    计算下一天的这个时刻, # 比如"2013-8-16 18:45:12" 的下一天的这个时刻 “2013-8-17 18:45:12” Time.now + 1.day 如果想得到 ...

  8. LoRaWAN协议(四)--入网方式概述

    前言 在LoRaWAN中,node最终和服务器能够正常数据交互,需要先入网,入网的本质,也就是获得一些通信相关的参数,有以下几个: NwkSKey AppSKey DevAddr DevEui 其中 ...

  9. 五分钟,运用cocoaui库,搭建主流iOS app中我的界面

    本项目基于天天团购项目,在上一篇中有说到! 首先介绍一些cocoaui,是国内的一名程序员做的开源的开源系统,目的是为了简化ios布局!官网地址:www.cocoaui.com,github地址:ht ...

  10. DZNEmptyDataSet,优秀的空白页或者出错页封装

    简介 项目主页:https://github.com/dzenbot/DZNEmptyDataSet 提示:主要用于UITableView和UICollectionView,也可以用于UIScroll ...