读书人

spring调整- mongodb

发布时间: 2012-09-29 10:30:01 作者: rapoo

spring整合- mongodb

1.环境

Jdk:1.6.0_10-rc2

Spring3.1.2 下载

依赖jar文件:

spring调整- mongodb

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.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/data/mongohttp://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> */@Testpublic void testInsert() {getUserDao().insert(new User(null, "testUser", 21));}/** * 批量新增  * <br>------------------------------<br> */@Testpublic 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> */@Testpublic void testDeleteById() {String id = "5058184ec85607e42c4bfad8";getUserDao().deleteById(id);}/** * 条件删除  * <br>------------------------------<br> */@Testpublic void testDelete() {//删除年龄大于25的getUserDao().delete(new User(null, null, 25));}/** * 删除全部 * <br>------------------------------<br> */@Testpublic void testDeleteAll() {getUserDao().deleteAll();}/** * 修改  根据id修改 * <br>------------------------------<br> */@Testpublic void testUpdateById() {getUserDao().updateById(new User("50581c08c856346f02e9842c", "张三", 100));}/** * 修改多个 * <br>------------------------------<br> */@Testpublic void update() {//修改年龄大于29岁的 姓名为“王五“User criteriaUser = new User(null, null, 29);User user = new User(null, "王五", 39);getUserDao().update(criteriaUser, user);}/** * 按主键查询, 如果不存在 返回null * <br>------------------------------<br> */@Testpublic void testFindById() {User user = getUserDao().findById("50581c08c856346f02e98425");print(user);}/** * 查询全部 * <br>------------------------------<br> */@Testpublic void testFindAll() {List<User> list = getUserDao().findAll();print(list);}/** * 按条件查询 * <br>------------------------------<br> */@Testpublic void testFind() {//查询25岁以上的, 分页User criteriaUser = new User(null, null, 20);List<User> list = getUserDao().find(criteriaUser, 1, 10);print(list);}/** * 查询出来后  修改 * <br>------------------------------<br> */@Testpublic void testFindAndModify() {User criteriaUser = new User("50581c08c856346f02e9842d", null, 0);User updateUser = new User(null, "张三", 100);updateUser = getUserDao().findAndModify(criteriaUser, updateUser);print(updateUser);}/** * 查询出来后 删除 * <br>------------------------------<br> */@Testpublic void testFindAndRemove() {User criteriaUser = new User("50581c08c856346f02e9842d", null, 0);criteriaUser = getUserDao().findAndRemove(criteriaUser);print(criteriaUser);}/** * count * <br>------------------------------<br> */@Testpublic 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;}}

读书人网 >其他数据库

热点推荐