javascript
Spring Data MongoDB教程
在當(dāng)今世界,盡快啟動并運(yùn)行應(yīng)用程序非常重要。 該應(yīng)用程序還應(yīng)該易于開發(fā)和維護(hù)。
Spring是這樣的框架,它提供了與許多不同框架的集成的簡便性,這使得使用Spring開發(fā)應(yīng)用程序變得容易。 一種這樣的集成是Spring與MongoDB的集成。
1.簡介
在本教程中,我們將討論最著名的Java框架“ Spring”和最著名的NoSQL數(shù)據(jù)庫“ MongoDB”的結(jié)合。 MongoDB是一個基于文檔的NoSQL數(shù)據(jù)庫,它以JSON之類的結(jié)構(gòu)存儲數(shù)據(jù)。
Spring提供了SpringData和MongoDB的集成,以方便兩者的集成,并為開發(fā)人員提供便利,而無需為編寫用于插入,更新和刪除的多個查詢而煩惱。
以下是SpringData MongoDB項目提供的一些功能:
了解任何技術(shù)的最佳方法是實踐,我們現(xiàn)在將做同樣的事情。
現(xiàn)在讓我們做一個簡單的程序來詳細(xì)了解Spring Data MongoDB。
2.技術(shù)和工具
讓我們看看用于構(gòu)建程序的技術(shù)和工具。
3.項目結(jié)構(gòu)
我們的項目結(jié)構(gòu)如下圖所示。
SpringDataMongoDB的項目結(jié)構(gòu)
Gradle項目結(jié)構(gòu)將具有上面顯示的項目結(jié)構(gòu)。 如果使用pom.xml,則項目結(jié)構(gòu)將略有不同。
4.計劃
作為該計劃的一部分,我們將嘗試實現(xiàn)以下目標(biāo)。
現(xiàn)在讓我們了解程序的所有組件。 首先,我們將從程序依賴關(guān)系和程序所需的jar開始。
4.1搖籃
我們正在使用Gradle作為該程序的一部分進(jìn)行構(gòu)建。 build.gradle文件將如下所示。
build.gradle
apply plugin: 'java' repositories {mavenCentral() }dependencies {compile group: 'org.springframework.data', name: 'spring-data-mongodb', version: '2.0.5.RELEASE'implementation 'com.google.guava:guava:23.0'testImplementation 'junit:junit:4.12' } 在上面的build.gradle文件中, apply plugin: 'java'告訴我們需要設(shè)置的插件。 對我們來說,它是Java插件。
repositories{}讓我們知道應(yīng)該從中提取依賴關(guān)系的存儲庫。 我們選擇了mavenCentral拉依賴罐。 我們還可以使用jcenter提取相應(yīng)的依賴罐。
dependencies {}標(biāo)簽用于提供應(yīng)為項目提取的必要的jar文件詳細(xì)信息。
4.2 MongoDB的配置
為了使用MongoDB配置,我們需要實現(xiàn)AbstractMongoConfiguration類。 MongoConfig.java類將如下所示。 我們在這里使用注釋而不是xml。 但是,甚至XML也可以用于設(shè)置配置。
MongoConfig.java類的實現(xiàn)
package com.tutorial.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.mongodb.config.AbstractMongoConfiguration; import com.mongodb.MongoClient;@Configuration public class MongoConfig extends AbstractMongoConfiguration {@Overridepublic String getDatabaseName() {return "local";}@Override@Beanpublic MongoClient mongoClient() {return new MongoClient("127.0.0.1");} }@Configuration用于將類MongoConfig.java定義為配置類。 @Bean定義MongoClient Bean。
4.3模型類別
現(xiàn)在我們來看看模型類。 我們使用student.java作為模型類,其中包含Student的屬性,例如名稱和年齡。 Student.java模型類用于將POJO映射到MongoDB集合。
學(xué)生模型班
package com.tutorial.model;import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document;@Document(collection = "students") public class Student {public Student(String studentName, int studentAge) {this.studentName = studentName;this.studentAge = studentAge;}@Idprivate String id;String studentName;int studentAge;public String getStudentName() {return studentName;}public void setStudentName(String studentName) {this.studentName = studentName;}public int getStudentAge() {return studentAge;}public void setStudentAge(int studentAge) {this.studentAge = studentAge;}@Overridepublic String toString() {return String.format("Student[id=%s, studentName='%s', studentAge="+studentAge+"]",id, studentName);} }@Document定義文檔。 屬性collection定義了集合,該集合將用于與集合進(jìn)行映射。 在集合中提到的所有屬性都應(yīng)該在POJO類中可用。 @Id定義集合的ID。
4.4 CRUD操作
為了執(zhí)行諸如保存數(shù)據(jù),更新數(shù)據(jù),刪除數(shù)據(jù)以及從MongoDB中獲取數(shù)據(jù)之類的CRUD操作,我們將使用MongoOperations 。
現(xiàn)在讓我們看一下MongoDBPOperations.java類。 此類包含CRUD操作的所有方法的實現(xiàn)。
MongoDBPOperations類,將用于執(zhí)行CRUD操作
package com.tutorial;import java.util.List;import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update;import com.tutorial.model.Student;public class MongoDBPOperations {public void saveStudent(MongoOperations mongoOperation, Student student) {mongoOperation.save(student);System.out.println("Student saved successfully");// student object got created with id.System.out.println("student : " + student);}public void searchStudent(MongoOperations mongoOperation, String critera,String value) {// query to search studentQuery searchStudent = new Query(Criteria.where(critera).is(value));// find student based on the queryStudent resultStudent = mongoOperation.findOne(searchStudent, Student.class);System.out.println("Student found!!");System.out.println("Student details: " + resultStudent);}public void updateStudent(MongoOperations mongoOperation, String critera,String value, String updateCriteria, String updateValue) {// query to search studentQuery searchStudent = new Query(Criteria.where(critera).is(value));mongoOperation.updateFirst(searchStudent, Update.update(updateCriteria, updateValue),Student.class);System.out.println("Student got updated successfully");}public void getAllStudent(MongoOperations mongoOperation) {List listStudent = mongoOperation.findAll(Student.class);for(Student student:listStudent) {System.out.println("Student = " + student);}}public void removeStudent(MongoOperations mongoOperation, String critera,String value) {Query searchStudent = new Query(Criteria.where(critera).is(value));mongoOperation.remove(searchStudent, Student.class);System.out.println("Student removed successfully!! ");} }Java程序最重要的類是包含main方法的類。
4.5應(yīng)用類別
包含main方法的主要類是Application.java類。 我們將使用此類從MongoDBPOperations類中調(diào)用方法。
調(diào)用MongoDBPOperations類的方法的應(yīng)用程序類
package com.tutorial;import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.data.mongodb.core.MongoOperations; import com.tutorial.config.MongoConfig; import com.tutorial.model.Student;public class Application {public static void main (String[] args) {// For AnnotationApplicationContext ctx = new AnnotationConfigApplicationContext(MongoConfig.class);MongoOperations mongoOperation = (MongoOperations) ctx.getBean("mongoTemplate");MongoDBPOperations ops = new MongoDBPOperations();Student student = new Student("John", 15);//save studentops.saveStudent(mongoOperation, student);// get student based on search criteriaops.searchStudent(mongoOperation, "studentName", "John");//update student based on criteriaops.updateStudent(mongoOperation, "StudentName", "John", "studentAge", "18");// get student based on search criteriaops.searchStudent(mongoOperation, "studentName", "John");// get all the studentsops.getAllStudent(mongoOperation);//remove student based on criteriaops.removeStudent(mongoOperation, "studentName", "John");// get all the studentsops.getAllStudent(mongoOperation);}}讓我們看一下在Application.java類中執(zhí)行的分步操作:
4.6運(yùn)行程序
最后,讓我們現(xiàn)在將程序作為Java應(yīng)用程序運(yùn)行。 右鍵單擊Application.java-> Run as-> Java Application。
以下結(jié)果將出現(xiàn)在控制臺上。
運(yùn)行程序后的控制臺輸出
現(xiàn)在讓我們注釋一下刪除對象的命令。 MongoDB將成功存儲數(shù)據(jù)。
此外,讓我們注釋一下刪除對象的行,如下所示。
注釋刪除方法后的應(yīng)用程序類
package com.tutorial;import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.data.mongodb.core.MongoOperations; import com.tutorial.config.MongoConfig; import com.tutorial.model.Student;public class Application {public static void main (String[] args) {// For AnnotationApplicationContext ctx = new AnnotationConfigApplicationContext(MongoConfig.class);MongoOperations mongoOperation = (MongoOperations) ctx.getBean("mongoTemplate");MongoDBPOperations ops = new MongoDBPOperations();Student student = new Student("John", 15);//save studentops.saveStudent(mongoOperation, student);// get student based on search criteriaops.searchStudent(mongoOperation, "studentName", "John");//update student based on criteriaops.updateStudent(mongoOperation, "StudentName", "John", "studentAge", "18");// get student based on search criteriaops.searchStudent(mongoOperation, "studentName", "John");// get all the studentsops.getAllStudent(mongoOperation);//remove student based on criteria//ops.removeStudent(mongoOperation, "studentName", "John");// get all the students//ops.getAllStudent(mongoOperation);}}由于程序更改,讓我們重新運(yùn)行該程序。 以下內(nèi)容將出現(xiàn)在控制臺上。
注釋刪除命令時控制臺
由于注釋了刪除命令,MongoDB將存儲數(shù)據(jù),因此將如下所示。
保存和更新命令后的MongoDB輸出
5.下載Eclipse項目
這是Spring Data MongoDB的一個示例。
下載您可以在此處下載此示例的完整源代碼: SpringDataMongoDBTutorial.zip
翻譯自: https://www.javacodegeeks.com/2018/03/spring-data-mongodb-tutorial.html
總結(jié)
以上是生活随笔為你收集整理的Spring Data MongoDB教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java sax解析xml_在Java中
- 下一篇: Spring Cloud Netflix