MongoDB整合Spring
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;
- }
- }
- 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
MongoDB整合Spring的更多相关文章
- MongoDB 学习(三)MongoDB 和 Spring 整合(Maven)
一.MongoDB 和 Spring 整合(Maven) 1.相关 jar 包准备 2.用 Maven 创建项目,pom.xml 文件 <project xmlns="http://m ...
- SpringBoot第九篇:整合Spring Data JPA
作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/10910059.html 版权声明:本文为博主原创文章,转载请附上博文链接! 前言 前面几章, ...
- 【Java EE 学习 81】【CXF框架】【CXF整合Spring】
一.CXF简介 CXF是Apache公司下的项目,CXF=Celtix+Xfire:它支持soap1.1.soap1.2,而且能够和spring进行快速无缝整合. 另外jax-ws是Sun公司发布的一 ...
- Mybatis整合Spring
根据官方的说法,在ibatis3,也就是Mybatis3问世之前,Spring3的开发工作就已经完成了,所以Spring3中还是没有对Mybatis3的支持.因此由Mybatis社区自己开发了一个My ...
- mybatis入门_一对多,多对多映射以及整合spring框架
一.一对多映射. 1.1 一对多映射之根据多的一方关联查询一的一方 示例:查询出具体的订单信息,同时也查询出来订单的用户信息. 引入的订单表如下所示: 框选出来的为具体的外键. 订单的Pojo类如下所 ...
- 《SSM框架搭建》三.整合spring web
感谢学习http://blog.csdn.net/zhshulin/article/details/37956105#,还是修改了spring到最新的版本和接口开发示例 根据前一篇日志,已经有了myb ...
- Maven 整合 spring profile实现多环境自动切换
Maven 整合 spring profile实现多环境自动切换 时间:2014-03-19 15:32来源:Internet 作者:Internet 点击:525次 profile主要用在项目多环境 ...
- TinyFrame续篇:整合Spring IOC实现依赖注入
上一篇主要讲解了如何搭建基于CodeFirst的ORM,并且在章节末我们获取了上下文对象的实例:BookContext.这节主要承接上一篇,来讲解如何整合Spring IOC容器实现控制反转,依赖注入 ...
- Ehcache 整合Spring 使用页面、对象缓存
Ehcache 整合Spring 使用页面.对象缓存 Ehcache在很多项目中都出现过,用法也比较简单.一 般的加些配置就可以了,而且Ehcache可以对页面.对象.数据进行缓存,同时支持集群/分布 ...
随机推荐
- win7任务栏还原为xp样式
win7的确是非常强大的操作系统,值得一提的是超级任务栏,非常新颖,不过,不是很适应win7的超级任务栏,今天,我们恢复win7超级任务栏还原xp任务栏. 方法/步骤: 1.在win7超级任务栏空白处 ...
- 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 ...
- Eclipse:Cannot complete the install because of a conflicting dependency.问题解决
今天尝试在线更新ADT(22到23)的时候,遇到了这么个问题,从错误提示中初步看起来是存在引用的冲突: 估计大家在把22升级到23的时候都会遇上这个问题,新旧版冲突,感觉像是ADT自己的bug. 其实 ...
- MINE
MINE MINE is an app for the nearly 1.2 million songwriters, composers, musicians, and publishers who ...
- Sidekiq任务堵塞问题
今天发现服务器上的sidekiq 线程全忙.队列里任务积累了好多. sidekiq里的任务基本都是爬虫脚本,都需要请求外部网站.但是有些网站的响应时间或者读取时间太久,一直一直卡在那里.使得后面的任务 ...
- 导出excel和PDF小结 vba
最近接触了一个关于Access工具的项目,所以整理下需要使用的方法. 功能要求简介: 1.将数据表中的数据导出到excel和PDF 2.并根据某个字段名称分sheet输出. 3.无模板方式 方案简介: ...
- ruby -- 基础学习(六)时间计算
计算下一天的这个时刻, # 比如"2013-8-16 18:45:12" 的下一天的这个时刻 “2013-8-17 18:45:12” Time.now + 1.day 如果想得到 ...
- LoRaWAN协议(四)--入网方式概述
前言 在LoRaWAN中,node最终和服务器能够正常数据交互,需要先入网,入网的本质,也就是获得一些通信相关的参数,有以下几个: NwkSKey AppSKey DevAddr DevEui 其中 ...
- 五分钟,运用cocoaui库,搭建主流iOS app中我的界面
本项目基于天天团购项目,在上一篇中有说到! 首先介绍一些cocoaui,是国内的一名程序员做的开源的开源系统,目的是为了简化ios布局!官网地址:www.cocoaui.com,github地址:ht ...
- DZNEmptyDataSet,优秀的空白页或者出错页封装
简介 项目主页:https://github.com/dzenbot/DZNEmptyDataSet 提示:主要用于UITableView和UICollectionView,也可以用于UIScroll ...