`
wbj0110
  • 浏览: 1612995 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

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

阅读更多

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

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

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

pom.xml

 

<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.mkfree</groupId><artifactId>Mongodb</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-mongodb</artifactId><version>1.0.3.RELEASE</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.6</version></dependency></dependencies><repositories><repository><id>spring-release</id><name>Spring Maven Release Repository</name><url>http://repo.springsource.org/libs-release</url></repository></repositories></project>

 

spring 配置文件:

mongodb.xml

 

<?xml version="1.0" encoding="UTF-8"?><beansxmlns="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/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"><!-- Default bean name is 'mongo' --><mongo:mongohost="127.0.0.1"port="27017"/><mongo:db-factorydbname="database"mongo-ref="mongo"/><beanid="mongoTemplate"class="org.springframework.data.mongodb.core.MongoTemplate"><constructor-argname="mongoDbFactory"ref="mongoDbFactory"/><!-- <constructor-arg name="mongoConverter" ref="mappingConverter" /> --></bean></beans>

 

framework-context.xml

 

<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"><!-- 扫描注解Bean --><context:component-scanbase-package="com.mkfree.**.service"><context:exclude-filtertype="annotation"expression="org.springframework.stereotype.Controller"/></context:component-scan><context:component-scanbase-package="com.mkfree.**.dao"><context:exclude-filtertype="annotation"expression="org.springframework.stereotype.Controller"/></context:component-scan></beans>

 

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

MongodbBaseDao.java

package com.mkfree.framework.common.mongodb;import java.util.List;import org.springframework.data.mongodb.core.MongoTemplate;import org.springframework.data.mongodb.core.query.Query;import org.springframework.data.mongodb.core.query.Update;publicabstractclassMongodbBaseDao{/**
	 * spring mongodb 集成操作类 
	 */protectedMongoTemplate mongoTemplate;/**
	 * 通过条件查询实体(集合)
	 * 
	 * @param query
	 */publicListfind(Query query){return mongoTemplate.find(query,this.getEntityClass());}/**
	 * 通过一定的条件查询一个实体
	 * 
	 * @param query
	 * @return
	 */public T findOne(Query query){return mongoTemplate.findOne(query,this.getEntityClass());}/**
	 * 通过条件查询更新数据
	 * 
	 * @param query
	 * @param update
	 * @return
	 */publicvoid update(Query query,Update update){
		mongoTemplate.upsert(query, update,this.getEntityClass());}/**
	 * 保存一个对象到mongodb
	 * 
	 * @param bean
	 * @return
	 */public T save(T bean){
		mongoTemplate.save(bean);return bean;}/**
	 * 通过ID获取记录
	 * 
	 * @param id
	 * @return
	 */public T get(String id){return mongoTemplate.findById(id,this.getEntityClass());}/**
	 * 通过ID获取记录,并且指定了集合名(表的意思)
	 * 
	 * @param id
	 * @param collectionName
	 *            集合名
	 * @return
	 */public T get(String id,String collectionName){return mongoTemplate.findById(id,this.getEntityClass(), collectionName);}/**
	 * 获取需要操作的实体类class
	 * 
	 * @return
	 */protectedabstractClassgetEntityClass();/**
	 * 注入mongodbTemplate
	 * 
	 * @param mongoTemplate
	 */protectedabstractvoid setMongoTemplate(MongoTemplate mongoTemplate);}

ArticleDao.java

 

package com.mkfree.blog.dao;importstatic org.springframework.data.mongodb.core.query.Criteria.where;importstatic org.springframework.data.mongodb.core.query.Query.query;importstatic org.springframework.data.mongodb.core.query.Update.update;import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.data.mongodb.core.MongoTemplate;import org.springframework.data.mongodb.core.query.Criteria;import org.springframework.data.mongodb.core.query.Query;import org.springframework.stereotype.Repository;import com.mkfree.blog.domain.Article;import com.mkfree.framework.common.mongodb.MongodbBaseDao;/**
 * DAO层操作类
 * 
 * @author oyhk
 * 
 *         2013-1-21下午1:57:14
 */@SuppressWarnings("static-access")@Repository("ArticleDao")publicclassArticleDaoextendsMongodbBaseDao{/**
	 * 通过条件去查询
	 * 
	 * @return
	 */publicArticle findOne(Map<string, string=""> params){Query query =newQuery();Criteria criteria =newCriteria();
		criteria.where("id").is(params.get("id"));
		query.addCriteria(criteria);returnsuper.findOne(query);}/**
	 * 暂时通过ID去修改title
	 * 
	 * @param id
	 * @param params
	 */publicvoid updateEntity(String id,Map<string, string=""> params){super.updateEntity(query(where("id").is(id)), update("title", params.get("title")));}@Autowired@Qualifier("mongoTemplate")@Overrideprotectedvoid setMongoTemplate(MongoTemplate mongoTemplate){super.mongoTemplate = mongoTemplate;}@OverrideprotectedClassgetEntityClass(){returnArticle.class;}}

Article.java

package com.mkfree.blog.domain;/**
 * 博客实体类
 * 
 * @author hk 2012-11-1 下午10:55:38
 */publicclassPosts{privateString id;// 博客IDprivateString title;// 博客标题privateString content;// 博客内容publicString getId(){return id;}publicvoid setId(String id){this.id = id;}publicString getTitle(){return title;}publicvoid setTitle(String title){this.title = title;}publicString getContent(){return content;}publicvoid setContent(String content){this.content = content;}}

 

ArticleService.java

 

package com.mkfree.blog.service;import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.mkfree.blog.dao.ArticleDao;import com.mkfree.blog.domain.Article;@Service("articleService")publicclassArticleService{@AutowiredprivateArticleDao articleDao;publicArticle findByid(String id){return(Article) articleDao.get(id);}publicArticle findOne(Map<string, string=""> params){returnthis.articleDao.findOne(params);}publicArticle save(Article bean){return(Article) articleDao.save(bean);}/**
	 * 暂时只是固定去修改,会有下一篇博客,写高级修改...
	 */publicvoid update(String id,Map<string, string=""> params){this.articleDao.updateEntity(id, params);}}

ArticleController.java

 

 

package com.mkfree.blog.action;import java.util.HashMap;import java.util.Map;import org.junit.BeforeClass;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.mkfree.blog.domain.Article;import com.mkfree.blog.service.ArticleService;publicclassArticleController{privatestaticApplicationContext app;privatestaticArticleService articleService;@Testpublicvoid save(){Article a =newArticle();
		a.setTitle("mongodb开始实战");
		a.setContent("mongodb开始实战..内容");
		articleService.save(a);System.out.println(a);}@Testpublicvoid findArticle(){Article a = articleService.findByid("50fd0c36bc40ceec1a44308b");System.out.println(a);}@Testpublicvoid update(){Map<string, string=""> params =newHashMap<string, string="">();
		params.put("title","修改内容...");
		articleService.update("50fe23e6bc402ee4051f90b8", params);}@BeforeClasspublicstaticvoid initSpring(){
		app =newClassPathXmlApplicationContext(newString[]{"classpath:spring/framework-context.xml","classpath:spring/mongodb.xml"});
		articleService =(ArticleService) app.getBean("articleService");}}

源代码下载:見附件

come from internet

分享到:
评论

相关推荐

    Spring Data MongoDB中文文档

    - **MongoTemplate** 是 **Spring Data MongoDB** 提供的一个核心类,用于执行 MongoDB 的 CRUD 操作。 - 它提供了很多方便的方法来执行数据库操作,例如:`insert()`, `save()`, `findOne()`, `remove()`, `find()`...

    spring mongodb用到的jar包spring-date-mongodb1.4.2.zip

    Spring Data MongoDB 提供了对MongoDB数据库的高级支持,使得在Spring应用中集成和操作MongoDB变得更加便捷。它实现了ORM(对象关系映射)的概念,尽管MongoDB是一个NoSQL文档数据库,而不是传统的关系型数据库。这...

    spring-data-mongodb增强工具包,简化 CRUD 操作,提供类mybatis plus的数据库操作体验

    spring-data-mongodb增强工具包,简化 CRUD 操作,提供类mybatis plus的数据库操作。传统关系型数据库及围绕它们构建的orm在项目开发中有很多难用的痛点,而mongodb这种文档性数据库的出现,完美的解决了sql数据库在...

    spring-data使用mongodbTemplate对MongoDB进行读写操作

    Spring Data MongoDB是一个强大的Java库,它为开发人员提供了一种简单的方式来访问和操作MongoDB数据库。这个库是Spring Data框架的一部分,旨在简化数据访问层的实现,尤其在使用NoSQL数据库如MongoDB时。MongoDB...

    Spring+MongoDB整合 项目

    1. **数据访问层**:Spring Data MongoDB模块提供了与MongoDB的集成,包括MongoTemplate和MongoRepository接口,使得操作MongoDB就像操作传统JDBC一样简单。例如,可以通过定义Repository接口并继承MongoRepository...

    springdata mongodb api文档

    这是一个用于MongoDB操作的类,它封装了对MongoDB的基本CRUD(创建、读取、更新、删除)操作,并且提供了一个更加面向对象的接口,使得开发者可以通过更加自然的方式来操作MongoDB。 SpringData MongoDB支持查询...

    SpringMongoDB+SpringMvc

    **SpringMongoDB+SpringMvc封装DAO层** 在描述中提到的"封装DAO层",指的是将数据访问操作(Data Access Object)抽象出来,形成独立的组件。在Spring MVC应用中,DAO层通常包含以下部分: 1. **MongoTemplate**:...

    spring-data-mongodb-1.2.0.RELEASE

    通过使用 Spring Data MongoDB,开发者可以避免编写大量的 CRUD(创建、读取、更新、删除)操作代码,提高开发效率。 二、MongoDB 简介 MongoDB 是一种文档型数据库,支持 JSON 格式的文档存储,具有高性能、高可用...

    mongoDB DAO层封装

    综上所述,MongoDB DAO层封装涉及了MongoDB的使用、Spring Data的集成、 CURD操作的实现、Repository接口的定制,以及数据的映射和转换。这样的封装提高了代码的复用性和可维护性,降低了开发难度,使得开发者可以更...

    mongodb的odm封装

    MongoDB的ODM(Object-Document Mapping)是用于将数据模型与MongoDB文档数据库之间的映射技术,使得开发者可以用面向对象的方式来操作数据库,而无需直接处理底层的BSON文档。在PHP中,ODM框架可以帮助我们更高效、...

    springboot+mongodb

    通过使用 Spring Data MongoDB,你可以轻松地创建 MongoDB 操作的 Repository 接口,如 CRUD(创建、读取、更新、删除)操作,而无需编写大量的底层代码。 2. **配置 MongoDB**:在 Spring Boot 应用中,你需要在 `...

    Struts2+Spring+Maven+MongoDB项目骨架

    在项目中,MongoDB可以作为存储业务数据的后端,与Spring的数据访问层集成,提供CRUD操作接口。 项目骨架通常包含以下组件: 1. **readme.txt**:这是一个文本文件,通常包含了项目的基本信息、使用说明和安装指南...

    mongodb+spring+strust框架完整示例版本

    Action类则负责调用业务逻辑,这部分逻辑可能涉及到与MongoDB的交互,例如通过Spring管理的MongoDB DAO执行CRUD操作。 在实际应用中,由于Struts 1的局限性和安全性问题,现代开发更多倾向于使用Spring Boot和...

    weasel-spring-mongodb:一个封装了对mongodb的包,基于spring

    【weasel-spring-mongodb】是一个专为Java开发者设计的工具包,旨在简化Spring框架下对MongoDB数据库的集成和操作。MongoDB是一款流行的NoSQL数据库系统,它以JSON格式的文档存储数据,适合处理大规模、非结构化的...

    【课程设计】mongodb+javaSpring实现选课系统demo

    Spring Data MongoDB模块提供了MongoTemplate工具库,它是对MongoDB Java驱动程序的一个高级抽象,使得我们可以方便地进行数据操作。例如,通过MongoTemplate,你可以实现增删改查(CRUD)操作,如添加新的学生、...

    用MongoDB和Spring_Data创建Java应用

    接下来,我们将使用Spring Data for MongoDB创建一个具备基本CRUD(Create, Read, Update, Delete)功能的Java应用——NatureStore。 1. **添加依赖库**:确保项目的lib目录包含了Spring Data for MongoDB所需的jar...

    java+spring 5.0.8 mvc + mybatis + mongodb + mysql 架构环境搭建

    MyBatis与Spring的集成使得事务管理变得更加简单,可以在Spring配置中定义数据源和SqlSessionFactory。 3. **MongoDB**: MongoDB是一个NoSQL数据库,适合处理大规模、非结构化的数据。在Java应用中,通常使用...

    springboot整合MongoDB初级入门

    SpringBoot集成MongoDB的一个重要优点是,它将MongoDB的复杂性封装起来,让开发者可以专注于业务逻辑,而不是数据库操作。这种方式使得学习曲线变平,尤其适合初学者快速上手。 在实际项目中,你可能还需要考虑如何...

    基于spring data mongo封装的API,让开发人员不用知道mongo

    本项目基于Spring Data MongoDB封装了一套API,旨在让业务开发人员更加专注于业务逻辑,而非数据库操作。 首先,Spring Data MongoDB的核心在于Repository抽象,它提供了一种声明式的方式来处理数据库的CRUD(创建...

Global site tag (gtag.js) - Google Analytics