15468 发表于 2015-7-6 09:24:03

Spring Data集成MongoDB访问

  Spring Source吭哧哼哧,从2011年2月开始到2011年2月终于把spring-data-mongo-1.0.1给Release出来了。从1.0.0.M1到1.0.0.M3的版本叫做Spring Data Document。1.0.0.M4开始更名为Spring Data MongoDB 1.0.0 M4,不过官网并没有特别说明,乍一看有点莫名其妙,尤其是MongoTemplate从org.springframework.data.document.mongodb移动到org.springframework.data.mongodb.core,官网的HelloWorldExample却还是用org.springframework.data.document.mongodb做例子,实在造成不少误导。
  
  -----垃圾的cnblogs,编辑了半天的东西,一下子乱了格式,要重来!-----
  
  Spring Data Mongo需要依赖Spring Framework,因此,首先需要下载Spring Framework的jar包,新建一个Web工程,将Spring Framework的jar包引入。本文引用了如下组件:

  其中,除了Spring的几个组件包以外,还引用了MongoDB的Driver:mongo-2.7.3.jar;DWR3.0的组件dwr.jar;spring-data-mongdb-1.0.1.RELEASE.jar以及Spring Data的公共组件spring-data-commons-core-1.2.1.RELEASE.jar。需要说明的是,本文所使用的Spring Data Mongo的组件版本,需要采用Spring Framework 3.0.7及以上版本,否则程序运行会报错。
  
  引入上述组件后,需要修改Spring的配置文件ApplicationContext.xml文件,引入Spring Data Mongo的命名空间,并定义MongoDB的服务器地址和端口号,初始化MongoTemplate类,代码如下

View Code

1
2
3
12            
13   
14
15   
16
17   
18   
19         
20            
21               classpath:server.properties
22            
23         
24   
25   
26   
27   
28         
29         
30   
31   
32   
33   
34      
35      
36      
37   
38   
39   
40         
41   
42   
43   
44   下面开始一个简单的样例。首先,定义一个HelloKitty bean

View Code

1 /**
2*
3*/
4 package com.ics.bean;
5
6 import org.directwebremoting.annotations.DataTransferObject;
7
8 @DataTransferObject
9 public class HelloKitty
10 {
11   private String id;
12   
13   private String name;
14   
15   @Override
16   public String toString()
17   {
18         return "HelloKitty[" + "id=" + id + ", name=" + name + "]";
19   }
20
21   public String getId()
22   {
23         return id;
24   }
25
26   public void setId(String id)
27   {
28         this.id = id;
29   }
30
31   public String getName()
32   {
33         return name;
34   }
35
36   public void setName(String name)
37   {
38         this.name = name;
39   }
40 }  定义数据访问类,定义两个方法,一个用于在集合中插入一条记录,另一个根据name属性查询一条记录

View Code

1 /**
2*
3*/
4 package com.ics.dao;
5
6 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.data.mongodb.core.MongoTemplate;
8 import org.springframework.data.mongodb.core.query.Criteria;
9 import org.springframework.data.mongodb.core.query.Query;
10
11 import com.ics.bean.HelloKitty;
12
13
14 public class HelloKittyDAO
15 {
16   /**
17      * 定义集合名称
18      */
19   private static String HELLOKITTY = "HelloKitty";
20   
21   /**
22      * 操作MongoDB的对象
23      */
24   @Autowired
25   private MongoTemplate mongoTemplate;
26   
27   
28   public void createHelloKitty(HelloKitty hello)
29   {
30         mongoTemplate.insert(hello, HELLOKITTY);
31   }
32   
33   public HelloKitty getHelloKittyByName(String name)
34   {
35         return mongoTemplate.findOne(new Query(Criteria.where("name").is(name)), HelloKitty.class, HELLOKITTY);
36   }
37 }  简单的Service方法


1 /**
2*
3*/
4 package com.ics.service;
5
6 import org.springframework.beans.factory.annotation.Autowired;
7
8 import com.ics.bean.HelloKitty;
9 import com.ics.dao.HelloKittyDAO;
10
11 public class HelloKittyService
12 {
13   @Autowired
14   private HelloKittyDAO helloKittyDAO;
15   
16   public String createHelloKitty(HelloKitty hello)
17   {
18         helloKittyDAO.createHelloKitty(hello);
19         
20         HelloKitty ret = helloKittyDAO.getHelloKittyByName(hello.getName());
21         
22         return ret == null ? "" : ret.getId();
23   }
24 }  通过DWR发布出去


1 /**
2*
3*/
4 package com.ics.web.dwr;
5
6 import org.directwebremoting.annotations.RemoteMethod;
7 import org.directwebremoting.annotations.RemoteProxy;
8 import org.springframework.beans.factory.annotation.Autowired;
9
10 import com.ics.bean.HelloKitty;
11 import com.ics.service.HelloKittyService;
12
13 @RemoteProxy(name = "HelloKittyManage")
14 public class HelloKittyManage
15 {
16@Autowired
17private HelloKittyService helloKittyService;
18
19@RemoteMethod
20public String sayHello(HelloKitty hello)
21{
22   return "hello " + helloKittyService.createHelloKitty(hello);
23}
24 }  最后,在index.html访问这个DWR方法


1
2   
3         hello DWR
4         
5         
6         
7         
8             function sayHello()
9             {
10               var helloworld = {"name":"xyzz"};
11               HelloKittyManage.sayHello(helloworld, function(data){alert(data);});
12             }
13         
14   
15   
16          Spring 3.X with DWR
17         Retrieve test data
18   
19   启动MongoDB服务器,运行样例程序。
  在页面点击“Retrieve test data”,将会弹出“Hello 4f9fe5112d0182c5bc0a6c39”字样,其中“4f9fe5112d0182c5bc0a6c39”就是刚刚插入MongoDB中自动生成的ID。So easy,:)
页: [1]
查看完整版本: Spring Data集成MongoDB访问