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可以对页面.对象.数据进行缓存,同时支持集群/分布 ...
随机推荐
- mysql日期类型默认值'0000-00-00'容错处理
mysql日期默认值'0000-00-00'惹的祸 .net连mysql数据库时,如果表里有字段是日期型且值是‘0000-00-00’时,会报错.在C#里面日期不可能是那样的.或许是最小日期定义的差别 ...
- php 图片添加文字水印 以及 图片合成(微信快码传播)
1.图片添加文字水印: $bigImgPath = 'backgroud.png'; $img = imagecreatefromstring(file_get_contents($bigImgPat ...
- Qt snippet — 打开文件&保存文件
打开文件: void Notepad::on_actionOpen_triggered() { QString fileName = QFileDialog::getOpenFileName(this ...
- ThinkJS 项目用 WebStorm 来设置断点与调试
1. 前置条件.已按ThinkJS 2.0 文档 之 <创建项目> 建好项目. 说明a: 本示例创建项目名为wagang,使用es6配置: thinkjs new wagang --es6 ...
- undefined function mysql_connect()解决方法
在配置apache+php+mysql后,打开一个php网页文件正常,但是php网页中连接数据库时,出现以下提示: Fatal error: Call to undefined function my ...
- ruby self.included用法
===Module#included 当一个模块混入到类时,如果该模块的included方法已经定义,那么该方法被调用.该方法的唯一参数就是接受混含的类的名字. module M def self.i ...
- mysql 语句case when
CREATE TABLE `lee` (`id` int(10) NOT NULL AUTO_INCREMENT, `name` char(20) DEFAULT NULL, `birthday` d ...
- 正确理解静态Static关键字
与其他语言不通,C#没有全局变量和全局函数的感念,C#的所有字段和方法都出现在一个类的上下文中,在C#中与全局字段或函数等价的就是静态字段或方法.“全局字段或方法”与“C#的静态字段或方法”没有功能上 ...
- Sqoop实现关系型数据库到hive的数据传输
Sqoop实现关系型数据库到hive的数据传输 sh脚本 #!/bin/sh v_columns=NOTE_ID_1,NOTE_NAME_1,NOTE_ID_2,NOTE_NAME_2,NOTE_ID ...
- 随着ScrollView的滑动,渐渐的执行动画View
今天是实现了一个小功能的东西.看看效果图: 实现方式: 1.自定义ScrollView 复写onScrollChange方法,来计算滑动的位置. 2.自定义接口,通过接口来在ScrollView中 ...