zoukankan      html  css  js  c++  java
  • MongoDB整合Spring

    1.环境

         Jdk:1.6.0_10-rc2

         Spring3.1.2  下载

         依赖jar文件:

      

    2.相关配置

    ①.Spring配置文件

    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <beans xmlns="http://www.springframework.org/schema/beans"  
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
    4.     xmlns:context="http://www.springframework.org/schema/context"  
    5.     xmlns:mongo="http://www.springframework.org/schema/data/mongo"  
    6.     xsi:schemaLocation="  
    7.         http://www.springframework.org/schema/beans   
    8.         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
    9.         http://www.springframework.org/schema/context   
    10.         http://www.springframework.org/schema/context/spring-context-3.0.xsd  
    11.         http://www.springframework.org/schema/data/mongo  
    12.         http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd">  
    13.       
    14.     <mongo:mongo id="mongo"  host="127.0.0.1" port="27017"   />  
    15.       
    16.     <bean id="userCredentials" class="org.springframework.data.authentication.UserCredentials">  
    17.         <constructor-arg name="username"  value="userName"/>  
    18.         <constructor-arg name="password"  value="password"/>  
    19.     </bean>  
    20.       
    21.     <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">  
    22.         <constructor-arg ref="mongo" />  
    23.         <constructor-arg value="test-mongo" />  
    24.         <constructor-arg ref="userCredentials" />  
    25.     </bean>  
    26.       
    27.     <bean id="userDao" class="com.x.mongodb.dao.impl.UserDao" />  
    28. </beans>  

    ②.MongoTemplate  Api

    1. package com.x.mongodb.dao.support;  
    2.   
    3. import org.springframework.beans.BeansException;  
    4. import org.springframework.context.ApplicationContext;  
    5. import org.springframework.context.ApplicationContextAware;  
    6. import org.springframework.data.mongodb.core.MongoTemplate;  
    7.   
    8. /** 
    9.  * @author <a href="http://blog.csdn.net/java2000_wl">java2000_wl</a> 
    10.  * @version <b>1.0</b> 
    11.  */  
    12. public abstract class AbstractBaseMongoTemplete implements ApplicationContextAware {  
    13.       
    14.     protected MongoTemplate mongoTemplate;  
    15.   
    16.     /** 
    17.      * 设置mongoTemplate 
    18.      * @param mongoTemplate the mongoTemplate to set 
    19.      */  
    20.     public void setMongoTemplate(MongoTemplate mongoTemplate) {  
    21.         this.mongoTemplate = mongoTemplate;  
    22.     }  
    23.       
    24.     public void setApplicationContext(ApplicationContext applicationContext)  
    25.             throws BeansException {  
    26.         MongoTemplate mongoTemplate = applicationContext.getBean("mongoTemplate", MongoTemplate.class);  
    27.         setMongoTemplate(mongoTemplate);  
    28.     }  
    29. }  

    1. package com.x.mongodb.dao.impl;  
    2.   
    3. import java.util.List;  
    4.   
    5. import org.springframework.data.mongodb.core.query.Criteria;  
    6. import org.springframework.data.mongodb.core.query.Query;  
    7. import org.springframework.data.mongodb.core.query.Update;  
    8.   
    9. import com.x.mongodb.dao.IUserDao;  
    10. import com.x.mongodb.dao.support.AbstractBaseMongoTemplete;  
    11. import com.x.mongodb.entity.User;  
    12.   
    13. /** 
    14.  * @author <a href="http://blog.csdn.net/java2000_wl">java2000_wl</a> 
    15.  * @version <b>1.0</b> 
    16.  */  
    17. public class UserDao extends AbstractBaseMongoTemplete implements IUserDao {  
    18.   
    19.     /** 
    20.      * 新增 
    21.      * <br>------------------------------<br> 
    22.      * @param user 
    23.      */  
    24.     public void insert(User user) {  
    25.         mongoTemplate.insert(user);  
    26.     }  
    27.       
    28.     /** 
    29.      * 批量新增 
    30.      * <br>------------------------------<br> 
    31.      * @param users 
    32.      */  
    33.     public void insertAll(List<User> users) {  
    34.         mongoTemplate.insertAll(users);  
    35.     }  
    36.       
    37.     /** 
    38.      * 删除,按主键id, 如果主键的值为null,删除会失败 
    39.      * <br>------------------------------<br> 
    40.      * @param id 
    41.      */  
    42.     public void deleteById(String id) {  
    43.         User user = new User(id, null0);  
    44.         mongoTemplate.remove(user);  
    45.     }  
    46.       
    47.     /** 
    48.      * 按条件删除 
    49.      * <br>------------------------------<br> 
    50.      * @param criteriaUser 
    51.      */  
    52.     public void delete(User criteriaUser) {  
    53.         Criteria criteria = Criteria.where("age").gt(criteriaUser.getAge());;  
    54.         Query query = new Query(criteria);  
    55.         mongoTemplate.remove(query, User.class);  
    56.     }  
    57.       
    58.     /** 
    59.      * 删除全部 
    60.      * <br>------------------------------<br> 
    61.      */  
    62.     public void deleteAll() {  
    63.         mongoTemplate.dropCollection(User.class);  
    64.     }  
    65.       
    66.     /** 
    67.      * 按主键修改, 
    68.      * 如果文档中没有相关key 会新增 使用$set修改器 
    69.      * <br>------------------------------<br> 
    70.      * @param user 
    71.      */  
    72.     public void updateById(User user) {  
    73.         Criteria criteria = Criteria.where("id").is(user.getId());  
    74.         Query query = new Query(criteria);  
    75.         Update update = Update.update("age", user.getAge()).set("name", user.getName());  
    76.         mongoTemplate.updateFirst(query, update, User.class);  
    77.     }  
    78.       
    79.     /** 
    80.      * 修改多条 
    81.      * <br>------------------------------<br> 
    82.      * @param criteriaUser 
    83.      * @param user 
    84.      */  
    85.     public void update(User criteriaUser, User user) {  
    86.         Criteria criteria = Criteria.where("age").gt(criteriaUser.getAge());;  
    87.         Query query = new Query(criteria);  
    88.         Update update = Update.update("name", user.getName()).set("age", user.getAge());  
    89.         mongoTemplate.updateMulti(query, update, User.class);  
    90.     }  
    91.       
    92.     /** 
    93.      * 根据主键查询 
    94.      * <br>------------------------------<br> 
    95.      * @param id 
    96.      * @return 
    97.      */  
    98.     public User findById(String id) {  
    99.         return mongoTemplate.findById(id, User.class);  
    100.     }  
    101.       
    102.     /** 
    103.      * 查询全部 
    104.      * <br>------------------------------<br> 
    105.      * @return 
    106.      */  
    107.     public List<User> findAll() {  
    108.         return mongoTemplate.findAll(User.class);  
    109.     }  
    110.       
    111.     /** 
    112.      * 按条件查询, 分页 
    113.      * <br>------------------------------<br> 
    114.      * @param criteriaUser 
    115.      * @param skip 
    116.      * @param limit 
    117.      * @return 
    118.      */  
    119.     public List<User> find(User criteriaUser, int skip, int limit) {  
    120.         Query query = getQuery(criteriaUser);  
    121.         query.skip(skip);  
    122.         query.limit(limit);  
    123.         return mongoTemplate.find(query, User.class);  
    124.     }  
    125.       
    126.     /** 
    127.      * 根据条件查询出来后 再去修改 
    128.      * <br>------------------------------<br> 
    129.      * @param criteriaUser  查询条件 
    130.      * @param updateUser    修改的值对象 
    131.      * @return 
    132.      */  
    133.     public User findAndModify(User criteriaUser, User updateUser) {  
    134.         Query query = getQuery(criteriaUser);  
    135.         Update update = Update.update("age", updateUser.getAge()).set("name", updateUser.getName());  
    136.         return mongoTemplate.findAndModify(query, update, User.class);  
    137.     }  
    138.       
    139.     /** 
    140.      * 查询出来后 删除 
    141.      * <br>------------------------------<br> 
    142.      * @param criteriaUser 
    143.      * @return 
    144.      */  
    145.     public User findAndRemove(User criteriaUser) {  
    146.         Query query = getQuery(criteriaUser);  
    147.         return mongoTemplate.findAndRemove(query, User.class);  
    148.     }  
    149.       
    150.     /** 
    151.      * count 
    152.      * <br>------------------------------<br> 
    153.      * @param criteriaUser 
    154.      * @return 
    155.      */  
    156.     public long count(User criteriaUser) {  
    157.         Query query = getQuery(criteriaUser);  
    158.         return mongoTemplate.count(query, User.class);  
    159.     }  
    160.   
    161.     /** 
    162.      * 
    163.      * <br>------------------------------<br> 
    164.      * @param criteriaUser 
    165.      * @return 
    166.      */  
    167.     private Query getQuery(User criteriaUser) {  
    168.         if (criteriaUser == null) {  
    169.             criteriaUser = new User();  
    170.         }  
    171.         Query query = new Query();  
    172.         if (criteriaUser.getId() != null) {  
    173.             Criteria criteria = Criteria.where("id").is(criteriaUser.getId());  
    174.             query.addCriteria(criteria);  
    175.         }  
    176.         if (criteriaUser.getAge() > 0) {  
    177.             Criteria criteria = Criteria.where("age").gt(criteriaUser.getAge());  
    178.             query.addCriteria(criteria);  
    179.         }  
    180.         if (criteriaUser.getName() != null) {  
    181.             Criteria criteria = Criteria.where("name").regex("^" + criteriaUser.getName());  
    182.             query.addCriteria(criteria);  
    183.         }  
    184.         return query;  
    185.     }  
    186. }  

    1. package com.x.mongodb.dao;  
    2.   
    3. import java.util.List;  
    4.   
    5. import com.x.mongodb.entity.User;  
    6.   
    7. /** 
    8.  * @author <a href="http://blog.csdn.net/java2000_wl">java2000_wl</a> 
    9.  * @version <b>1.0</b> 
    10.  */  
    11. public interface IUserDao {  
    12.       
    13.     /** 
    14.      * 新增 
    15.      * <br>------------------------------<br> 
    16.      * @param user 
    17.      */  
    18.     void insert(User user);  
    19.       
    20.     /** 
    21.      * 新增 
    22.      * <br>------------------------------<br> 
    23.      * @param users 
    24.      */  
    25.     void insertAll(List<User> users);  
    26.       
    27.     /** 
    28.      * 删除,主键id, 如果主键的值为null,删除会失败 
    29.      * <br>------------------------------<br> 
    30.      * @param id 
    31.      */  
    32.     void deleteById(String id);  
    33.       
    34.     /** 
    35.      * 按条件删除 
    36.      * <br>------------------------------<br> 
    37.      * @param criteriaUser 
    38.      */  
    39.     void delete(User criteriaUser);  
    40.       
    41.     /** 
    42.      * 删除全部 
    43.      * <br>------------------------------<br> 
    44.      */  
    45.     void deleteAll();  
    46.       
    47.     /** 
    48.      * 修改 
    49.      * <br>------------------------------<br> 
    50.      * @param user 
    51.      */  
    52.     void updateById(User user);  
    53.       
    54.     /** 
    55.      * 更新多条 
    56.      * <br>------------------------------<br> 
    57.      * @param criteriaUser 
    58.      * @param user 
    59.      */  
    60.     void update(User criteriaUser, User user);  
    61.       
    62.     /** 
    63.      * 根据主键查询 
    64.      * <br>------------------------------<br> 
    65.      * @param id 
    66.      * @return 
    67.      */  
    68.     User findById(String id);  
    69.       
    70.     /** 
    71.      * 查询全部 
    72.      * <br>------------------------------<br> 
    73.      * @return 
    74.      */  
    75.     List<User> findAll();  
    76.       
    77.     /** 
    78.      * 按条件查询 
    79.      * <br>------------------------------<br> 
    80.      * @param criteriaUser 
    81.      * @param skip 
    82.      * @param limit 
    83.      * @return 
    84.      */  
    85.     List<User> find(User criteriaUser, int skip, int limit);  
    86.       
    87.     /** 
    88.      * 根据条件查询出来后 在去修改 
    89.      * <br>------------------------------<br> 
    90.      * @param criteriaUser  查询条件 
    91.      * @param updateUser    修改的值对象 
    92.      * @return 
    93.      */  
    94.     User findAndModify(User criteriaUser, User updateUser);  
    95.       
    96.     /** 
    97.      * 查询出来后 删除 
    98.      * <br>------------------------------<br> 
    99.      * @param criteriaUser 
    100.      * @return 
    101.      */  
    102.     User findAndRemove(User criteriaUser);  
    103.       
    104.     /** 
    105.      * count 
    106.      * <br>------------------------------<br> 
    107.      * @param criteriaUser 
    108.      * @return 
    109.      */  
    110.     long count(User criteriaUser);  
    111. }  

    1. package com.x.mongodb.entity;  
    2.   
    3. import java.io.Serializable;  
    4. import java.util.HashMap;  
    5. import java.util.Map;  
    6.   
    7. /** 
    8.  * @author <a href="http://blog.csdn.net/java2000_wl">java2000_wl</a> 
    9.  * @version <b>1.0</b> 
    10.  */  
    11. public class User implements Serializable {  
    12.   
    13.     private static final long serialVersionUID = -5785857960597910259L;  
    14.       
    15.     private String id;  
    16.       
    17.     private String name;  
    18.       
    19.     private int age;  
    20.       
    21.     /** 
    22.      * <br>------------------------------<br> 
    23.      */  
    24.     public User() {  
    25.     }  
    26.   
    27.     /** 
    28.      *  
    29.      * <br>------------------------------<br> 
    30.      * @param id 
    31.      * @param name 
    32.      * @param age 
    33.      */  
    34.     public User(String id, String name, int age) {  
    35.         super();  
    36.         this.id = id;  
    37.         this.name = name;  
    38.         this.age = age;  
    39.     }  
    40.   
    41.     /** 
    42.      * 获得id 
    43.      * @return the id 
    44.      */  
    45.     public String getId() {  
    46.         return id;  
    47.     }  
    48.   
    49.     /** 
    50.      * 设置id 
    51.      * @param id the id to set 
    52.      */  
    53.     public void setId(String id) {  
    54.         this.id = id;  
    55.     }  
    56.   
    57.     /** 
    58.      * 获得name 
    59.      * @return the name 
    60.      */  
    61.     public String getName() {  
    62.         return name;  
    63.     }  
    64.   
    65.     /** 
    66.      * 设置name 
    67.      * @param name the name to set 
    68.      */  
    69.     public void setName(String name) {  
    70.         this.name = name;  
    71.     }  
    72.   
    73.     /** 
    74.      * 获得age 
    75.      * @return the age 
    76.      */  
    77.     public int getAge() {  
    78.         return age;  
    79.     }  
    80.   
    81.     /** 
    82.      * 设置age 
    83.      * @param age the age to set 
    84.      */  
    85.     public void setAge(int age) {  
    86.         this.age = age;  
    87.     }  
    88.       
    89.     /** 
    90.      * toString 
    91.      */  
    92.     public String toString() {  
    93.         Map<String, String> map = new HashMap<String, String>();  
    94.         map.put("id", id);  
    95.         map.put("name", name);  
    96.         map.put("age", String.valueOf(age));  
    97.         return map.toString();  
    98.     }  
    99. }  

    1. import java.util.ArrayList;  
    2. import java.util.Collection;  
    3. import java.util.List;  
    4.   
    5. import org.junit.Test;  
    6. import org.springframework.context.ApplicationContext;  
    7. import org.springframework.context.support.ClassPathXmlApplicationContext;  
    8.   
    9. import com.x.mongodb.dao.IUserDao;  
    10. import com.x.mongodb.entity.User;  
    11.   
    12. /** 
    13.  * @author <a href="http://blog.csdn.net/java2000_wl">java2000_wl</a> 
    14.  * @version <b>1.0</b> 
    15.  */  
    16. public class UserDaoTest {  
    17.       
    18.     /** 
    19.      * 新增  
    20.      * <br>------------------------------<br> 
    21.      */  
    22.     @Test  
    23.     public void testInsert() {  
    24.         getUserDao().insert(new User(null"testUser"21));  
    25.     }  
    26.       
    27.     /** 
    28.      * 批量新增  
    29.      * <br>------------------------------<br> 
    30.      */  
    31.     @Test  
    32.     public void testInsertAll() {  
    33.         List<User> list = new ArrayList<User>();  
    34.         for (int i = 0; i < 10; i++) {  
    35.             list.add(new User(null"testUser" + i, 21 + i));  
    36.         }  
    37.         getUserDao().insertAll(list);  
    38.     }  
    39.       
    40.     /** 
    41.      * 根据主键删除  
    42.      * <br>------------------------------<br> 
    43.      */  
    44.     @Test  
    45.     public void testDeleteById() {  
    46.         String id = "5058184ec85607e42c4bfad8";  
    47.         getUserDao().deleteById(id);  
    48.     }  
    49.       
    50.     /** 
    51.      * 条件删除  
    52.      * <br>------------------------------<br> 
    53.      */  
    54.     @Test  
    55.     public void testDelete() {  
    56.         //删除年龄大于25的  
    57.         getUserDao().delete(new User(nullnull25));  
    58.     }  
    59.       
    60.     /** 
    61.      * 删除全部 
    62.      * <br>------------------------------<br> 
    63.      */  
    64.     @Test  
    65.     public void testDeleteAll() {  
    66.         getUserDao().deleteAll();  
    67.     }  
    68.       
    69.     /** 
    70.      * 修改  根据id修改 
    71.      * <br>------------------------------<br> 
    72.      */  
    73.     @Test  
    74.     public void testUpdateById() {  
    75.         getUserDao().updateById(new User("50581c08c856346f02e9842c""张三"100));  
    76.     }  
    77.       
    78.     /** 
    79.      * 修改多个 
    80.      * <br>------------------------------<br> 
    81.      */  
    82.     @Test  
    83.     public void update() {  
    84.         //修改年龄大于29岁的 姓名为“王五“  
    85.         User criteriaUser = new User(nullnull29);  
    86.         User user = new User(null"王五"39);  
    87.         getUserDao().update(criteriaUser, user);  
    88.     }  
    89.       
    90.     /** 
    91.      * 按主键查询, 如果不存在 返回null 
    92.      * <br>------------------------------<br> 
    93.      */  
    94.     @Test  
    95.     public void testFindById() {  
    96.         User user = getUserDao().findById("50581c08c856346f02e98425");  
    97.         print(user);  
    98.     }  
    99.       
    100.     /** 
    101.      * 查询全部 
    102.      * <br>------------------------------<br> 
    103.      */  
    104.     @Test  
    105.     public void testFindAll() {  
    106.         List<User> list = getUserDao().findAll();  
    107.         print(list);  
    108.     }  
    109.       
    110.     /** 
    111.      * 按条件查询 
    112.      * <br>------------------------------<br> 
    113.      */  
    114.     @Test  
    115.     public void testFind() {  
    116.         //查询25岁以上的, 分页  
    117.         User criteriaUser = new User(nullnull20);  
    118.         List<User> list = getUserDao().find(criteriaUser, 110);  
    119.         print(list);  
    120.     }  
    121.       
    122.     /** 
    123.      * 查询出来后  修改 
    124.      * <br>------------------------------<br> 
    125.      */  
    126.     @Test  
    127.     public void testFindAndModify() {  
    128.         User criteriaUser = new User("50581c08c856346f02e9842d"null0);  
    129.         User updateUser = new User(null"张三"100);  
    130.         updateUser = getUserDao().findAndModify(criteriaUser, updateUser);  
    131.         print(updateUser);  
    132.     }  
    133.       
    134.     /** 
    135.      * 查询出来后 删除 
    136.      * <br>------------------------------<br> 
    137.      */  
    138.     @Test  
    139.     public void testFindAndRemove() {  
    140.         User criteriaUser = new User("50581c08c856346f02e9842d"null0);  
    141.         criteriaUser = getUserDao().findAndRemove(criteriaUser);  
    142.         print(criteriaUser);  
    143.     }  
    144.       
    145.     /** 
    146.      * count 
    147.      * <br>------------------------------<br> 
    148.      */  
    149.     @Test  
    150.     public void testCount() {  
    151.         User criteriaUser = new User(null"test"0);  
    152.         long count = getUserDao().count(criteriaUser);  
    153.         print(count);  
    154.     }  
    155.       
    156.     public void print(Object object) {  
    157.         if (object == null || !(object instanceof Collection)) {  
    158.             System.out.println(object);  
    159.             return;  
    160.         }  
    161.         List<?> list = (List<?>) object;  
    162.         for (Object obj : list) {  
    163.             System.out.println(obj);  
    164.         }  
    165.     }  
    166.       
    167.     public IUserDao getUserDao() {  
    168.         String configLocations = "applicationContext.xml";  
    169.         ApplicationContext applicationContext = new ClassPathXmlApplicationContext(configLocations);  
    170.         IUserDao userDao = applicationContext.getBean("userDao", IUserDao.class);  
    171.         return userDao;  
    172.     }  
    173. }  
        摘自:http://blog.csdn.net/java2000_wl/article/details/7983547
  • 相关阅读:
    FusionCharts--加载XML文件
    昌泡排序的结果从小到大
    调试javaee郑阿奇第二章出现的问题
    补充-servlet基础
    利用二维int型数组表达一个矩阵,创建该数组并将其元素打印输出
    创建字符串数组并将元素转换为小写输出
    在一个字符串中搜索虽一个字符串
    在数组中查找指定的值
    复制字符串
    补充 精通JSP开发应用 (Eclipse 平台) 第六章 基础技术:Servlet
  • 原文地址:https://www.cnblogs.com/zhangchuan210/p/3637715.html
Copyright © 2011-2022 走看看