MongoDB整合Spring
1.环境Jdk:1.6.0_10-rc2
Spring3.1.2下载
依赖jar文件:
2.相关配置
①.Spring配置文件
view plaincopyprint?
[*]
[*]
[*]
[*]
[*]
[*]
[*]
[*]
[*]
[*]
[*]
[*]
[*]
[*]
[*]
[*]
[*]
[*]
②.MongoTemplateApi
view plaincopyprint?
[*]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);
[*] }
[*]}
view plaincopyprint?
[*]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;
[*] }
[*]}
view plaincopyprint?
[*]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);
[*]}
view plaincopyprint?
[*]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();
[*] }
[*]}
view plaincopyprint?
[*]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;
[*] }
[*]}
摘自:http://blog.iyunv.com/java2000_wl/article/details/7983547
页:
[1]