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可以对页面.对象.数据进行缓存,同时支持集群/分布 ...
随机推荐
- 关于IT概念的一些思考
同事提及“软件工程.软件生命周期.项目管理.CMMI.IPD.RUP.UML及UML建模.面向对象分析与设计.需求分析.系统分析与设计……等等,它们到底是什么?它们之间有什么关系?” 下面是个人见 ...
- POJ 2096 Collecting Bugs
Collecting Bugs Time Limit: 10000MS Memory Limit: 64000K Total Submissions: 1716 Accepted: 783 C ...
- 【开源】EFW框架系列文章索引
开源轻量级.Net框架EnterpriseFrameWork详解 ——自己动手写框架 ——适合中小企业的开发框架 ——Ajax+JqueryEasyUI+NotNetBar+MVC+WebServic ...
- Haskell 与范畴论
说到 Haskell,这真是一门逼格极高的编程语言,一般初学者如果没有相关函数式编程的经验,入门直接接触那些稀奇古怪的概念,简直要跪下.现在回想起来,隐隐觉得初学者所拥有的命令式编程语言(impera ...
- java框架篇---spring hibernate整合
在会使用hibernate 和spring框架后 两个框架的整合就变的相当容易了, 为什么要整合Hibernate?1.使用Spring的IOC功能管理SessionFactory对象 LocalSe ...
- SQL优化方案
1:建立中间表,将步骤分解. 2:避免全字段查询,只查需要的字段 3:限定条件查询,避免先关联后写条件, --优化交货数据 --建临时表T_JHinfo select A.VBELN,C.VBEL ...
- Nginx+Keepalived实现站点高可用
http://seanlook.com/2015/05/18/nginx-keepalived-ha/ http://blog.csdn.net/conquer0715/article/details ...
- js apply/call/caller/callee/bind使用方法与区别分析
一.call 方法 调用一个对象的一个方法,以另一个对象替换当前对象(其实就是更改对象的内部指针,即改变对象的this指向的内容). Js代码 call([thisObj[,arg1[, arg2[, ...
- Weblogic 10.3.6生产模式启动
生产模式启动里需要输入用户名和密码,很麻烦.在域的/security目录下创建文件boot.properties,内容为: username=weblogic password=weblogic123 ...
- Go Go
Go Go *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important ...