Spring整合- mongodb

    xiaoxiao2021-03-25  176

    1.环境

         Jdk:1.6.0_10-rc2

         Spring3.1.2  下载

         依赖jar文件:

      

    2.相关配置

    ①.Spring配置文件

    [html]  view plain  copy  print ? <?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

    [java]  view plain  copy  print ? 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);       }   }   [java]  view plain  copy  print ? 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, null0);           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;       }   }   [java]  view plain  copy  print ? 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);   }   [java]  view plain  copy  print ? 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();       }   }   [java]  view plain  copy  print ? 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(nullnull25));       }              /**       * 删除全部       * <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(nullnull29);           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(nullnull20);           List<User> list = getUserDao().find(criteriaUser, 110);           print(list);       }              /**       * 查询出来后  修改       * <br>------------------------------<br>       */       @Test       public void testFindAndModify() {           User criteriaUser = new User("50581c08c856346f02e9842d"null0);           User updateUser = new User(null"张三"100);           updateUser = getUserDao().findAndModify(criteriaUser, updateUser);           print(updateUser);       }              /**       * 查询出来后 删除       * <br>------------------------------<br>       */       @Test       public void testFindAndRemove() {           User criteriaUser = new User("50581c08c856346f02e9842d"null0);           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;       }   }  
    转载请注明原文地址: https://ju.6miu.com/read-4737.html

    最新回复(0)