1. 程式人生 > >MongoDB學習筆記之 第4章 MongoDB整合Spring

MongoDB學習筆記之 第4章 MongoDB整合Spring

 第4章 MongoDB整合Spring

(黎明你好原創作品,轉載請註明)

4.1 建立maven專案

4.1.1 repositories

建立maven專案,其中repositories使用spring的maven庫:

Java程式碼  收藏程式碼
  1. <repositories>  
  2.     <repository>  
  3.         <id>central</id>  
  4.         <name>Maven Central</name>  
  5.         <url>http://repo1.maven.org/maven2/</url>
      
  6.     </repository>  
  7.     <repository>  
  8.         <id>spring-release</id>  
  9.         <name>Spring Maven Release Repository</name>  
  10.         <url>http://repo.springsource.org/libs-release</url>  
  11.     </repository>  
  12.     <repository>  
  13.         <id>atlassian-m2-repository</id>  
  14.         <url>https://m2proxy.atlassian.com/repository/public</url>  
  15.     </repository>  
  16. </repositories>  

4.1.2 Dependencies

使用到的jar包:

Java程式碼  收藏程式碼
  1. <dependencies>  
  2.     <dependency>  
  3.         <groupId>javax.servlet</groupId>  
  4.         <artifactId>servlet-api</artifactId>  
  5.         <version>2.5</version>  
  6.         <type>jar</type>  
  7.         <scope>provided</scope>  
  8.     </dependency>  
  9.     <dependency>  
  10.         <groupId>org.slf4j</groupId>  
  11.         <artifactId>slf4j-api</artifactId>  
  12.         <version>1.6.1</version>  
  13.         <type>jar</type>  
  14.         <scope>compile</scope>  
  15.     </dependency>  
  16.     <dependency>  
  17.         <groupId>org.slf4j</groupId>  
  18.         <artifactId>slf4j-log4j12</artifactId>  
  19.         <version>1.7.5</version>  
  20.         <type>jar</type>  
  21.         <scope>runtime</scope>  
  22.     </dependency>  
  23.     <dependency>  
  24.         <groupId>org.mongodb</groupId>  
  25.         <artifactId>mongo-java-driver</artifactId>  
  26.         <version>2.10.1</version>  
  27.         <type>jar</type>  
  28.         <scope>compile</scope>  
  29.     </dependency>  
  30.     <dependency>  
  31.         <groupId>org.springframework.data</groupId>  
  32.         <artifactId>spring-data-mongodb</artifactId>  
  33.         <version>1.2.1.RELEASE</version>  
  34.         <type>jar</type>  
  35.         <scope>compile</scope>  
  36.     </dependency>  
  37.     <dependency>  
  38.         <groupId>org.springframework.data</groupId>  
  39.         <artifactId>spring-data-mongodb-cross-store</artifactId>  
  40.         <version>1.2.1.RELEASE</version>  
  41.         <type>jar</type>  
  42.         <scope>compile</scope>  
  43.     </dependency>  
  44.     <dependency>  
  45.         <groupId>org.springframework.data</groupId>  
  46.         <artifactId>spring-data-mongodb-log4j</artifactId>  
  47.         <version>1.2.1.RELEASE</version>  
  48.         <type>jar</type>  
  49.         <scope>compile</scope>  
  50.     </dependency>  
  51. </dependencies>  

4.2 新增spring配置檔案

spring的配置檔案applicationContext.xml

Java程式碼  收藏程式碼
  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="http://www.springframework.org/schema/beans  
  7.         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
  8.         http://www.springframework.org/schema/data/mongo       
  9.         http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd   
  10.         http://www.springframework.org/schema/context  
  11.         http://www.springframework.org/schema/context/spring-context-3.0.xsd">  
  12.     <context:component-scan base-package="liming.mongodb.example" />  
  13.     <mongo:mongo host="127.0.0.1" port="27017" />  
  14.     <!-- mongo的工廠,通過它來取得mongo例項,dbname為mongodb的資料庫名,沒有的話會自動建立 -->  
  15.     <mongo:db-factory dbname="student" mongo-ref="mongo" />  
  16.     <!-- mongodb的主要操作物件,所有對mongodb的增刪改查的操作都是通過它完成 -->  
  17.     <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">  
  18.         <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />  
  19.     </bean>  
  20.     <!-- 對映轉換器,掃描back-package目錄下的檔案,根據註釋,把它們作為mongodb的一個collection的對映 -->  
  21.     <mongo:mapping-converter base-package="climing.mongodb.example.data.model" />  
  22.     <!-- mongodb bean的倉庫目錄,會自動掃描擴充套件了MongoRepository介面的介面進行注入 -->  
  23.     <mongo:repositories base-package="liming.mongodb.example.data.impl" />  
  24.     <context:annotation-config />  
  25. </beans>  

4.3 增刪改查

Userl實現的增刪改查:

4.3.1UserEntity

Java程式碼  收藏程式碼
  1. package liming.mongodb.example.data.model;  
  2. import java.util.Date;  
  3. import org.springframework.data.annotation.Id;  
  4. import org.springframework.data.mongodb.core.mapping.Document;  
  5. @Document(collection = "user")  
  6. public class UserEntity {  
  7.     @Id  
  8.     private String id;  
  9.     private NameEntity name;  
  10.     private int age;  
  11.     private int works;  
  12.     private Date birth;  
  13.     private String password;  
  14.     private String regionName;  
  15.     private String[] special;  
  16.     public String getId() {  
  17.         return id;  
  18.     }  
  19.     public void setId(String id) {  
  20.         this.id = id;  
  21.     }  
  22.     public NameEntity getName() {  
  23.         return name;  
  24.     }  
  25.     public void setName(NameEntity name) {  
  26.         this.name = name;  
  27.     }  
  28.     public int getAge() {  
  29.         return age;  
  30.     }  
  31.     public void setAge(int age) {  
  32.         this.age = age;  
  33.     }  
  34.     public int getWorks() {  
  35.         return works;  
  36.     }  
  37.     public void setWorks(int works) {  
  38.         this.works = works;  
  39.     }  
  40.     public Date getBirth() {  
  41.         return birth;  
  42.     }  
  43.     public void setBirth(Date birth) {  
  44.         this.birth = birth;  
  45.     }  
  46.     public String getPassword() {  
  47.         return password;  
  48.     }  
  49.     public void setPassword(String password) {  
  50.         this.password = password;  
  51.     }  
  52.     public String getRegionName() {  
  53.         return regionName;  
  54.     }  
  55.     public void setRegionName(String regionName) {  
  56.         this.regionName = regionName;  
  57.     }  
  58.     public String[] getSpecial() {  
  59.         return special;  
  60.     }  
  61.     public void setSpecial(String[] special) {  
  62.         this.special = special;  
  63.     }  
  64. }  

4.3.2 NameEntity

Java程式碼  收藏程式碼
  1. package liming.mongodb.example.data.model;  
  2. public class NameEntity {  
  3.     private String username;  
  4.     private String nickname;  
  5.     public String getUsername() {  
  6.         return username;  
  7.     }  
  8.     public void setUsername(String username) {  
  9.         this.username = username;  
  10.     }  
  11.     public String getNickname() {  
  12.         return nickname;  
  13.     }  
  14.     public void setNickname(String nickname) {  
  15.         this.nickname = nickname;  
  16.     }  
  17. }  

4.3.3 UserDao

Java程式碼  收藏程式碼
  1. package liming.mongodb.example.data;  
  2. import java.util.List;  
  3. import liming.mongodb.example.data.model.UserEntity;  
  4. import org.springframework.transaction.annotation.Transactional;  
  5. @Transactional  
  6. public interface UserDao {  
  7.     public abstract void _test();  
  8.     public abstract void createCollection();  
  9.     public abstract List<UserEntity> findList(int skip, int limit);  
  10.     public abstract List<UserEntity> findListByAge(int age);  
  11.     public abstract UserEntity findOne(String id);  
  12.     public abstract UserEntity findOneByUsername(String username);  
  13.     public abstract void insert(UserEntity entity);  
  14.     public abstract void update(UserEntity entity);  
  15. }  

4.3.4 UserDaoImpl

Java程式碼  收藏程式碼
  1. package liming.mongodb.example.data.impl;  
  2. import java.util.List;  
  3. import java.util.Set;  
  4. import liming.mongodb.example.data.UserDao;  
  5. import liming.mongodb.example.data.model.UserEntity;  
  6. import org.slf4j.Logger;  
  7. import org.slf4j.LoggerFactory;  
  8. import org.springframework.beans.factory.annotation.Autowired;  
  9. import org.springframework.data.domain.Sort;  
  10. import org.springframework.data.domain.Sort.Direction;  
  11. import org.springframework.data.domain.Sort.Order;  
  12. import org.springframework.data.mongodb.core.MongoTemplate;  
  13. import org.springframework.data.mongodb.core.query.Criteria;  
  14. import org.springframework.data.mongodb.core.query.Query;  
  15. import org.springframework.data.mongodb.core.query.Update;  
  16. import org.springframework.stereotype.Repository;  
  17. import com.mongodb.DB;  
  18. @Repository  
  19. public class UserDaoImpl implements UserDao {  
  20.     public static final Logger logger = LoggerFactory.getLogger(UserDaoImpl.class);  
  21.     @Autowired  
  22.     private MongoTemplate mongoTemplate;  
  23.     @Override  
  24.     public void _test() {  
  25.         Set<String> colls = this.mongoTemplate.getCollectionNames();  
  26.         for (String coll : colls) {  
  27.             logger.info("CollectionName=" + coll);  
  28.         }  
  29.         DB db = this.mongoTemplate.getDb();  
  30.         logger.info("db=" + db.toString());  
  31.     }  
  32.     @Override  
  33.     public void createCollection() {  <