博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring整合- mongodb
阅读量:7174 次
发布时间:2019-06-29

本文共 12166 字,大约阅读时间需要 40 分钟。

hot3.png

1.环境

     Jdk:1.6.0_10-rc2

     Spring3.1.2  

     依赖jar文件:

  

2.相关配置

①.Spring配置文件

②.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 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);	}}
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; }}
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);}
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(); }}
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; }}

转载于:https://my.oschina.net/91jason/blog/362005

你可能感兴趣的文章
linux下的软硬链接
查看>>
【JAVA的 IO流之FileInputStream和FileOutputStream】
查看>>
远程连接mysql 授权方法详解
查看>>
FreeBSD网络配置
查看>>
@synthesize window=_window; 的理解
查看>>
Greenlet理解要点
查看>>
罗森伯格应邀主讲CDCC百家大讲堂38期
查看>>
How to Install Nextcloud 13 Server on Debian 9
查看>>
[深入理解文件系统之一] IO系统调用
查看>>
Java之implements
查看>>
【资料收集】林内域或者林间域之间的账户、计算机迁移
查看>>
更新windows SID工具,对于虚拟机复制很有用
查看>>
安装TOMCAT
查看>>
-bash: lsof: command not found 解决方法
查看>>
《.NET应用架构设计:原则、模式与实践》新书博客--试读-2.1.2 设计原则实战
查看>>
大家技术探讨
查看>>
使用Myeclipse自带的xFire来实现WebService
查看>>
《UNIX环境高级编程》apue.h 头文件的问题
查看>>
系统分析师证书求挂靠,请联系qq 369681392
查看>>
ubuntu中root与user相互切换
查看>>