




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MongoDB 是一个可扩展的、高性能的、开源的NoSQL数据库,跟传统的数据库不一样,MongoDB并不是将数据存储在表中,他将数据结构化为一个类似于JSON的文档中。这篇文章就是展示如何使用Java基于MongoDB和Spring Data创建一个CRUD应用。 Spring Data for MongoDBSpring Data for MongoDB提供了一个类似于基于Sping编程模型的NoSQL数据存储。Spring Data for MongoDB提供了很多特性,它使很多MongoDB的Java开发者解放了很多。MongoTemplate helper类支持通用的Mongo操作。它整合了文档和POJO之间的对象映射。通常,他会转换数据库访问异常到Spring中的异常结构。使用起来非常的方便。你可以点击这里下载。五步安装MongoDB最清楚的安装步骤当然是MongoDB官方的安装说明了。安装说明。1. 从这里下载最新的MongoDB。2. 解压到指定目录(这也算一步.)3. MongoDB需要一个存储文件的地方,Windows下默认的路径是C:datadb。但是我们可以指定。例如我指定下面的路径view sourceprint?1C:mongodbdatadb4. 到C:mongodbbin 文件夹下执行如下命令。view sourceprint?1C:mongodbbinmongod.exe dbpath C:mongodbdatadb如果你的路径包含空格,请使用双引号引起来。5. 到C:mongodbbin文件夹下,执行mongo.exe。默认的,mongo脚本将会监听localhost的27017端口。如果想将MongoDB作为windows的服务运行,点击这里。到这里MongoDB的安装就完成了,接下来使用java搞CRUD。五步使用Spring Data创建一个应用。1. 使用Document注解指明一个领域对象将被持久化到MongoDB中。Id注解identifies。view sourceprint?01package com.orangeslate.naturestore.domain;0203import org.springframework.data.annotation.Id;04import org.springframework.data.mongodb.core.mapping.Document;0506Document07public class Tree 0809Id10private String id;1112private String name;1314private String category;1516private int age;1718public Tree(String id, String name, int age) 19this.id = id;20 = name;21this.age = age;222324public String getId() 25return id;262728public void setId(String id) 29this.id = id;303132public String getName() 33return name;343536public void setName(String name) 37 = name;383940public String getCategory() 41return category;424344public void setCategory(String category) 45this.category = category;464748public int getAge() 49return age;505152public void setAge(int age) 53this.age = age;545556Override57public String toString() 58return Person id= + id + , name= + name + , age= + age59+ , category= + category + ;60612. 创建一个简单的接口。创建一个简单的接口,这个接口带有CRUD方法。这里我还带有createCollection方法和dropCollection方法。view sourceprint?01package com.orangeslate.naturestore.repository;0203import java.util.List;0405import com.mongodb.WriteResult;0607public interface Repository 0809public List getAllObjects();1011public void saveObject(T object);1213public T getObject(String id);1415public WriteResult updateObject(String id, String name);1617public void deleteObject(String id);1819public void createCollection();2021public void dropCollection();223. 创建一个指定的领域对象CRUD的实现。view sourceprint?01package com.orangeslate.naturestore.repository;0203import java.util.List;0405import org.springframework.data.mongodb.core.MongoTemplate;06import org.springframework.data.mongodb.core.query.Criteria;07import org.springframework.data.mongodb.core.query.Query;08import org.springframework.data.mongodb.core.query.Update;0910import com.mongodb.WriteResult;11import com.orangeslate.naturestore.domain.Tree;1213public class NatureRepositoryImpl implements Repository 1415MongoTemplate mongoTemplate;1617public void setMongoTemplate(MongoTemplate mongoTemplate) 18this.mongoTemplate = mongoTemplate;192021/*22* Get all trees.23*/24public List getAllObjects() 25return mongoTemplate.findAll(Tree.class);262728/*29* Saves a link Tree.30*/31public void saveObject(Tree tree) 32mongoTemplate.insert(tree);333435/*36* Gets a link Tree for a particular id.37*/38public Tree getObject(String id) 39return mongoTemplate.findOne(new Query(Criteria.where(id).is(id),40Tree.class);414243/*44* Updates a link Tree name for a particular id.45*/46public WriteResult updateObject(String id, String name) 47return mongoTemplate.updateFirst(48new Query(Criteria.where(id).is(id),49Update.update(name, name), Tree.class);505152/*53* Delete a link Tree for a particular id.54*/55public void deleteObject(String id) 56mongoTemplate57.remove(new Query(Criteria.where(id).is(id), Tree.class);585960/*61* Create a link Tree collection if the collection does not already62* exists63*/64public void createCollection() 65if (!mongoTemplate.collectionExists(Tree.class) 66mongoTemplate.createCollection(Tree.class);67686970/*71* Drops the link Tree collection if the collection does already exists72*/73public void dropCollection() 74if (mongoTemplate.collectionExists(Tree.class) 75mongoTemplate.dropCollection(Tree.class);7677784. 创建Spring context。将所有spring beans和mongodb对象都声明在Spring context文件中,这里创建的是applicationContext.xml文件。注意到我们并没有创建一个叫做nature的数据库。在第一次存储数据的时候MongoDB将会为我们创建这个数据库。view sourceprint?0102121315161718192021222324252627282930313233343637385. 创建一个测试类。这里我已经创建了一个测试类,并通过ClassPathXmlApplicationContext来初始化他。view sourceprint?01package com.orangeslate.naturestore.test;0203import org.springframework.context.ConfigurableApplicationContext;04import org.springframework.context.support.ClassPathXmlApplicationContext;0506import com.orangeslate.naturestore.domain.Tree;07import com.orangeslate.naturestore.repository.NatureRepositoryImpl;08import com.orangeslate.naturestore.repository.Repository;0910public class MongoTest 1112public static void main(String args) 1314ConfigurableApplicationContext context = new ClassPathXmlApplicationContext(15classpath:/spring/applicationContext.xml);1617Repository repository = context.getBean(NatureRepositoryImpl.class);1819/ cleanup collection before insertion20repository.dropCollection();2122/ create collection23repository.createCollection();2425repository.saveObject(new Tree(1, Apple Tree, 10);2627System.out.println(1. + repository.getAllObjects();2829repository.saveObject(new Tree(2, Orange Tree, 3);3031System.out.println(2. + repository.getAllObjects();3233System.out.println(Tree with id 1 + repository.getObject(1);3435repository.updateObject(1, Peach Tree);3637System.out.println(3. + repository.getAllObjects();3839repository.deleteObject(2);4041System.out.println(4. + repository.getAll
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 情商口才课件
- 兴义市第八中学2026届高一化学第一学期期中质量跟踪监视试题含解析
- 2026届浙江省杭州市江南实验学校高三化学第一学期期末达标测试试题含解析
- 怎么写食品安全活动方案
- 泡沫雕塑面试题及答案
- 小学汉字之谜社团活动方案
- 军事投弹考试题及答案
- 化学考核面试题及答案
- 家电公司配送管理规定
- java之spring面试题及答案
- 煤矿安全规程新旧版本对照表格版
- 私募薪酬管理办法
- 2025年急诊三基考试题库及答案
- 2025贵州航空产业城集团股份有限公司旗下子公司贵州安立航空材料有限公司招聘61人笔试历年参考题库附带答案详解
- 军人休假规定管理办法
- 2025秋人教版英语八年级上Unit 2 全单元听力材料文本及翻译
- DB11-T 1455-2025 电动汽车充电基础设施规划设计标准
- 2025北京初二(上)期末英语汇编:阅读单选CD篇
- 2025年公招教师特岗教师招聘考试教育公共基础知识真题(带答案)
- 2025年贵州省中考英语真题含答案
- 消除医疗歧视培训
评论
0/150
提交评论