首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

spring MongoDB 集成crud操作(简略封装)

2013-02-05 
spring MongoDB 集成crud操作(简单封装)oyhk 学习笔记这两天一直在学习mongodb,由于我的博客网站想把mysql

spring MongoDB 集成crud操作(简单封装)

oyhk 学习笔记

这两天一直在学习mongodb,由于我的博客网站想把mysql替换成mongodb,为什么会有这样的冲动,我通过收集一些资料,关于mongodb 跟 mysql 的对比...发现性能上mongodb比上mysql是高出很多倍...无论是增,删,修,查的操作.....都比mysql效率好...但是,我也看到,mongodb是文档型数据库...做一些高级查询的时候就可能产生麻烦了..特别是做银行的数据操作时,如果出错..没得事务回滚...这些都是比较严重的问题...

分析过博客网站这整个系统,觉得还是比较适合用mongodb...对于一些表与表的关联查询,我可以用程序上去解决(这部分可能就麻烦了些,不过没关系)...所以我决定使用mongodb

?更详细请下载源代码:http://blog.mkfree.com/posts/46

下面:spring MongoDB 集成crud操作(简单封装) 开始正题了,同样也是pom.xml首先把项目的依赖都管理好,这次一样用junit用来做action的动作触发,看看项目结构图:

spring MongoDB 集成crud操作(简略封装)

pom.xml

?

Xml代码??spring MongoDB 集成crud操作(简略封装)
  1. <project?xmlns="http://maven.apache.org/POM/4.0.0"?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"??
  2. ????xsi:schemaLocation="http://maven.apache.org/POM/4.0.0?http://maven.apache.org/xsd/maven-4.0.0.xsd">??
  3. ????<modelVersion>4.0.0</modelVersion>??
  4. ????<groupId>com.mkfree</groupId>??
  5. ????<artifactId>Mongodb</artifactId>??
  6. ????<version>0.0.1-SNAPSHOT</version>??
  7. ????<dependencies>??
  8. ????????<dependency>??
  9. ????????????<groupId>org.springframework.data</groupId>??
  10. ????????????<artifactId>spring-data-mongodb</artifactId>??
  11. ????????????<version>1.0.3.RELEASE</version>??
  12. ????????</dependency>??
  13. ????????<dependency>??
  14. ????????????<groupId>junit</groupId>??
  15. ????????????<artifactId>junit</artifactId>??
  16. ????????????<version>4.6</version>??
  17. ????????</dependency>??
  18. ????</dependencies>??
  19. ????<repositories>??
  20. ????????<repository>??
  21. ????????????<id>spring-release</id>??
  22. ????????????<name>Spring?Maven?Release?Repository</name>??
  23. ????????????<url>http://repo.springsource.org/libs-release</url>??
  24. ????????</repository>??
  25. ????</repositories>??
  26. </project>??

?spring 配置文件:

?

mongodb.xml

?

Xml代码??spring MongoDB 集成crud操作(简略封装)
  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"?xmlns:context="http://www.springframework.org/schema/context"??
  4. ????xmlns:mongo="http://www.springframework.org/schema/data/mongo"??
  5. ????xsi:schemaLocation="http://www.springframework.org/schema/context?http://www.springframework.org/schema/context/spring-context-3.1.xsd??
  6. http://www.springframework.org/schema/data/mongo?http://www.springframework.org/schema/data/mongo/spring-mongo-1.1.xsd??
  7. http://www.springframework.org/schema/beans?http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">??
  8. ????<!--?Default?bean?name?is?'mongo'?-->??
  9. ????<mongo:mongo?host="127.0.0.1"?port="27017"?/>??
  10. ????<mongo:db-factory?dbname="database"?mongo-ref="mongo"?/>??
  11. ??????
  12. ????<bean?id="mongoTemplate"?class="org.springframework.data.mongodb.core.MongoTemplate">??
  13. ????????<constructor-arg?name="mongoDbFactory"?ref="mongoDbFactory"?/>??
  14. ????????<!--?<constructor-arg?name="mongoConverter"?ref="mappingConverter"?/>?-->??
  15. ????</bean>??
  16. </beans>??

?framework-context.xml

?

?

Xml代码??spring MongoDB 集成crud操作(简略封装)
  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"?xmlns:aop="http://www.springframework.org/schema/aop"??
  4. ????xmlns:tx="http://www.springframework.org/schema/tx"?xmlns:context="http://www.springframework.org/schema/context"??
  5. ????xsi:schemaLocation="??
  6. ???????http://www.springframework.org/schema/beans?http://www.springframework.org/schema/beans/spring-beans-3.1.xsd??
  7. ???????http://www.springframework.org/schema/aop?http://www.springframework.org/schema/aop/spring-aop-3.1.xsd??
  8. ???????http://www.springframework.org/schema/tx?http://www.springframework.org/schema/tx/spring-tx-3.1.xsd??
  9. ???????http://www.springframework.org/schema/context?http://www.springframework.org/schema/context/spring-context-3.1.xsd">??
  10. ??
  11. ????<!--?扫描注解Bean?-->??
  12. ????<context:component-scan?base-package="com.mkfree.**.service">??
  13. ????????<context:exclude-filter?type="annotation"?expression="org.springframework.stereotype.Controller"?/>??
  14. ????</context:component-scan>??
  15. ????<context:component-scan?base-package="com.mkfree.**.dao">??
  16. ????????<context:exclude-filter?type="annotation"?expression="org.springframework.stereotype.Controller"?/>??
  17. ????</context:component-scan>??
  18. ??????
  19. </beans>??

?这样就配置成功了..看下面的java代码

?

MongodbBaseDao.java

?

Java代码??spring MongoDB 集成crud操作(简略封装)
  1. package?com.mkfree.framework.common.mongodb;??
  2. ??
  3. import?java.util.List;??
  4. ??
  5. import?org.springframework.data.mongodb.core.MongoTemplate;??
  6. import?org.springframework.data.mongodb.core.query.Query;??
  7. import?org.springframework.data.mongodb.core.query.Update;??
  8. ??
  9. public?abstract?class?MongodbBaseDao{??
  10. ??
  11. ????/**?
  12. ?????*?spring?mongodb 集成操作类 ?
  13. ?????*/??
  14. ????protected?MongoTemplate?mongoTemplate;??
  15. ??
  16. ????/**?
  17. ?????*?通过条件查询实体(集合)?
  18. ?????*??
  19. ?????*?@param?query?
  20. ?????*/??
  21. ????public?Listfind(Query?query)?{??
  22. ????????return?mongoTemplate.find(query,?this.getEntityClass());??
  23. ????}??
  24. ??
  25. ????/**?
  26. ?????*?通过一定的条件查询一个实体?
  27. ?????*??
  28. ?????*?@param?query?
  29. ?????*?@return?
  30. ?????*/??
  31. ????public?T?findOne(Query?query)?{??
  32. ????????return?mongoTemplate.findOne(query,?this.getEntityClass());??
  33. ????}??
  34. ??
  35. ????/**?
  36. ?????*?通过条件查询更新数据?
  37. ?????*??
  38. ?????*?@param?query?
  39. ?????*?@param?update?
  40. ?????*?@return?
  41. ?????*/??
  42. ????public?void?update(Query?query,?Update?update)?{??
  43. ????????mongoTemplate.upsert(query,?update,?this.getEntityClass());??
  44. ????}??
  45. ??
  46. ????/**?
  47. ?????*?保存一个对象到mongodb?
  48. ?????*??
  49. ?????*?@param?bean?
  50. ?????*?@return?
  51. ?????*/??
  52. ????public?T?save(T?bean)?{??
  53. ????????mongoTemplate.save(bean);??
  54. ????????return?bean;??
  55. ????}??
  56. ??
  57. ????/**?
  58. ?????*?通过ID获取记录?
  59. ?????*??
  60. ?????*?@param?id?
  61. ?????*?@return?
  62. ?????*/??
  63. ????public?T?get(String?id)?{??
  64. ????????return?mongoTemplate.findById(id,?this.getEntityClass());??
  65. ????}??
  66. ??
  67. ????/**?
  68. ?????*?通过ID获取记录,并且指定了集合名(表的意思)?
  69. ?????*??
  70. ?????*?@param?id?
  71. ?????*?@param?collectionName?
  72. ?????*????????????集合名?
  73. ?????*?@return?
  74. ?????*/??
  75. ????public?T?get(String?id,?String?collectionName)?{??
  76. ????????return?mongoTemplate.findById(id,?this.getEntityClass(),?collectionName);??
  77. ????}??
  78. ??
  79. ????/**?
  80. ?????*?获取需要操作的实体类class?
  81. ?????*??
  82. ?????*?@return?
  83. ?????*/??
  84. ????protected?abstract?ClassgetEntityClass();??
  85. ??
  86. ????/**?
  87. ?????*?注入mongodbTemplate?
  88. ?????*??
  89. ?????*?@param?mongoTemplate?
  90. ?????*/??
  91. ????protected?abstract?void?setMongoTemplate(MongoTemplate?mongoTemplate);??
  92. }??

?ArticleDao.java

?

?

Java代码??spring MongoDB 集成crud操作(简略封装)
  1. package?com.mkfree.blog.dao;??
  2. ??
  3. import?static?org.springframework.data.mongodb.core.query.Criteria.where;??
  4. import?static?org.springframework.data.mongodb.core.query.Query.query;??
  5. import?static?org.springframework.data.mongodb.core.query.Update.update;??
  6. ??
  7. import?java.util.Map;??
  8. ??
  9. import?org.springframework.beans.factory.annotation.Autowired;??
  10. import?org.springframework.beans.factory.annotation.Qualifier;??
  11. import?org.springframework.data.mongodb.core.MongoTemplate;??
  12. import?org.springframework.data.mongodb.core.query.Criteria;??
  13. import?org.springframework.data.mongodb.core.query.Query;??
  14. import?org.springframework.stereotype.Repository;??
  15. ??
  16. import?com.mkfree.blog.domain.Article;??
  17. import?com.mkfree.framework.common.mongodb.MongodbBaseDao;??
  18. ??
  19. /**?
  20. ?*?DAO层操作类?
  21. ?*??
  22. ?*?@author?oyhk?
  23. ?*??
  24. ?*?????????2013-1-21下午1:57:14?
  25. ?*/??
  26. @SuppressWarnings("static-access")??
  27. @Repository("ArticleDao")??
  28. public?class?ArticleDao?extends?MongodbBaseDao{??
  29. ??
  30. ????/**?
  31. ?????*?通过条件去查询?
  32. ?????*??
  33. ?????*?@return?
  34. ?????*/??
  35. ????public?Article?findOne(Map?params)?{??
  36. ????????Query?query?=?new?Query();??
  37. ????????Criteria?criteria?=?new?Criteria();??
  38. ????????criteria.where("id").is(params.get("id"));??
  39. ????????query.addCriteria(criteria);??
  40. ????????return?super.findOne(query);??
  41. ????}??
  42. ??
  43. ????/**?
  44. ?????*?暂时通过ID去修改title?
  45. ?????*??
  46. ?????*?@param?id?
  47. ?????*?@param?params?
  48. ?????*/??
  49. ????public?void?updateEntity(String?id,?Map?params)?{??
  50. ????????super.updateEntity(query(where("id").is(id)),?update("title",?params.get("title")));??
  51. ????}??
  52. ??
  53. ????@Autowired??
  54. ????@Qualifier("mongoTemplate")??
  55. ????@Override??
  56. ????protected?void?setMongoTemplate(MongoTemplate?mongoTemplate)?{??
  57. ????????super.mongoTemplate?=?mongoTemplate;??
  58. ????}??
  59. ??
  60. ????@Override??
  61. ????protected?ClassgetEntityClass()?{??
  62. ????????return?Article.class;??
  63. ????}??
  64. ??
  65. }??

?Article.java

?

?

Java代码??spring MongoDB 集成crud操作(简略封装)
  1. package?com.mkfree.blog.domain;??
  2. ??
  3. /**?
  4. ?*?博客实体类?
  5. ?*??
  6. ?*?@author?hk?2012-11-1?下午10:55:38?
  7. ?*/??
  8. public?class?Posts?{??
  9. ????private?String?id;//?博客ID??
  10. ????private?String?title;//?博客标题??
  11. ????private?String?content;//?博客内容??
  12. ??
  13. ????public?String?getId()?{??
  14. ????????return?id;??
  15. ????}??
  16. ??
  17. ????public?void?setId(String?id)?{??
  18. ????????this.id?=?id;??
  19. ????}??
  20. ??
  21. ????public?String?getTitle()?{??
  22. ????????return?title;??
  23. ????}??
  24. ??
  25. ????public?void?setTitle(String?title)?{??
  26. ????????this.title?=?title;??
  27. ????}??
  28. ??
  29. ????public?String?getContent()?{??
  30. ????????return?content;??
  31. ????}??
  32. ??
  33. ????public?void?setContent(String?content)?{??
  34. ????????this.content?=?content;??
  35. ????}??
  36. ??
  37. }??

?ArticleService.java

?

?

Java代码??spring MongoDB 集成crud操作(简略封装)
  1. package?com.mkfree.blog.service;??
  2. ??
  3. import?java.util.Map;??
  4. ??
  5. import?org.springframework.beans.factory.annotation.Autowired;??
  6. import?org.springframework.stereotype.Service;??
  7. ??
  8. import?com.mkfree.blog.dao.ArticleDao;??
  9. import?com.mkfree.blog.domain.Article;??
  10. ??
  11. @Service("articleService")??
  12. public?class?ArticleService?{??
  13. ??
  14. ????@Autowired??
  15. ????private?ArticleDao?articleDao;??
  16. ??
  17. ????public?Article?findByid(String?id)?{??
  18. ????????return?(Article)?articleDao.get(id);??
  19. ????}??
  20. ??
  21. ????public?Article?findOne(Map?params)?{??
  22. ????????return?this.articleDao.findOne(params);??
  23. ????}??
  24. ??
  25. ????public?Article?save(Article?bean)?{??
  26. ????????return?(Article)?articleDao.save(bean);??
  27. ????}??
  28. ??
  29. ????/**?
  30. ?????*?暂时只是固定去修改,会有下一篇博客,写高级修改...?
  31. ?????*/??
  32. ????public?void?update(String?id,?Map?params)?{??
  33. ????????this.articleDao.updateEntity(id,?params);??
  34. ????}??
  35. }??

?ArticleController.java

?

?

Java代码??spring MongoDB 集成crud操作(简略封装)
  1. package?com.mkfree.blog.action;??
  2. ??
  3. import?java.util.HashMap;??
  4. import?java.util.Map;??
  5. ??
  6. import?org.junit.BeforeClass;??
  7. import?org.junit.Test;??
  8. import?org.springframework.context.ApplicationContext;??
  9. import?org.springframework.context.support.ClassPathXmlApplicationContext;??
  10. ??
  11. import?com.mkfree.blog.domain.Article;??
  12. import?com.mkfree.blog.service.ArticleService;??
  13. ??
  14. public?class?ArticleController?{??
  15. ??
  16. ????private?static?ApplicationContext?app;??
  17. ????private?static?ArticleService?articleService;??
  18. ??
  19. ????@Test??
  20. ????public?void?save()?{??
  21. ????????Article?a?=?new?Article();??
  22. ????????a.setTitle("mongodb开始实战");??
  23. ????????a.setContent("mongodb开始实战..内容");??
  24. ????????articleService.save(a);??
  25. ????????System.out.println(a);??
  26. ????}??
  27. ??
  28. ????@Test??
  29. ????public?void?findArticle()?{??
  30. ????????Article?a?=?articleService.findByid("50fd0c36bc40ceec1a44308b");??
  31. ????????System.out.println(a);??
  32. ????}??
  33. ??
  34. ????@Test??
  35. ????public?void?update()?{??
  36. ????????Map?params?=?new?HashMap();??
  37. ????????params.put("title",?"修改内容...");??
  38. ????????articleService.update("50fe23e6bc402ee4051f90b8",?params);??
  39. ????}??
  40. ??
  41. ????@BeforeClass??
  42. ????public?static?void?initSpring()?{??
  43. ????????app?=?new?ClassPathXmlApplicationContext(new?String[]?{?"classpath:spring/framework-context.xml",??
  44. ????????????????"classpath:spring/mongodb.xml"?});??
  45. ????????articleService?=?(ArticleService)?app.getBean("articleService");??
  46. ????}??
  47. }??

?源代码下载:http://blog.mkfree.com/posts/46

?本文章来自:?http://blog.mkfree.com/posts/46

? ? ? ? ? ? ? ? ? ? ? http://oyhk.iteye.com/blog/1774090

热点排行