javascript
Spring Data MongoDB教程
在當今世界,盡快啟動并運行應用程序非常重要。 該應用程序還應該易于開發和維護。
Spring是這樣的框架,它提供了與許多不同框架的集成的簡便性,這使得使用Spring開發應用程序變得容易。 一種這樣的集成是Spring與MongoDB的集成。
1.簡介
在本教程中,我們將討論最著名的Java框架“ Spring”和最著名的NoSQL數據庫“ MongoDB”的結合。 MongoDB是一個基于文檔的NoSQL數據庫,它以JSON之類的結構存儲數據。
Spring提供了SpringData和MongoDB的集成,以方便兩者的集成,并為開發人員提供便利,而無需為編寫用于插入,更新和刪除的多個查詢而煩惱。
以下是SpringData MongoDB項目提供的一些功能:
了解任何技術的最佳方法是實踐,我們現在將做同樣的事情。
現在讓我們做一個簡單的程序來詳細了解Spring Data MongoDB。
2.技術和工具
讓我們看看用于構建程序的技術和工具。
3.項目結構
我們的項目結構如下圖所示。
SpringDataMongoDB的項目結構
Gradle項目結構將具有上面顯示的項目結構。 如果使用pom.xml,則項目結構將略有不同。
4.計劃
作為該計劃的一部分,我們將嘗試實現以下目標。
現在讓我們了解程序的所有組件。 首先,我們將從程序依賴關系和程序所需的jar開始。
4.1搖籃
我們正在使用Gradle作為該程序的一部分進行構建。 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'告訴我們需要設置的插件。 對我們來說,它是Java插件。
repositories{}讓我們知道應該從中提取依賴關系的存儲庫。 我們選擇了mavenCentral拉依賴罐。 我們還可以使用jcenter提取相應的依賴罐。
dependencies {}標簽用于提供應為項目提取的必要的jar文件詳細信息。
4.2 MongoDB的配置
為了使用MongoDB配置,我們需要實現AbstractMongoConfiguration類。 MongoConfig.java類將如下所示。 我們在這里使用注釋而不是xml。 但是,甚至XML也可以用于設置配置。
MongoConfig.java類的實現
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模型類別
現在我們來看看模型類。 我們使用student.java作為模型類,其中包含Student的屬性,例如名稱和年齡。 Student.java模型類用于將POJO映射到MongoDB集合。
學生模型班
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定義了集合,該集合將用于與集合進行映射。 在集合中提到的所有屬性都應該在POJO類中可用。 @Id定義集合的ID。
4.4 CRUD操作
為了執行諸如保存數據,更新數據,刪除數據以及從MongoDB中獲取數據之類的CRUD操作,我們將使用MongoOperations 。
現在讓我們看一下MongoDBPOperations.java類。 此類包含CRUD操作的所有方法的實現。
MongoDBPOperations類,將用于執行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應用類別
包含main方法的主要類是Application.java類。 我們將使用此類從MongoDBPOperations類中調用方法。
調用MongoDBPOperations類的方法的應用程序類
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類中執行的分步操作:
4.6運行程序
最后,讓我們現在將程序作為Java應用程序運行。 右鍵單擊Application.java-> Run as-> Java Application。
以下結果將出現在控制臺上。
運行程序后的控制臺輸出
現在讓我們注釋一下刪除對象的命令。 MongoDB將成功存儲數據。
此外,讓我們注釋一下刪除對象的行,如下所示。
注釋刪除方法后的應用程序類
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);}}由于程序更改,讓我們重新運行該程序。 以下內容將出現在控制臺上。
注釋刪除命令時控制臺
由于注釋了刪除命令,MongoDB將存儲數據,因此將如下所示。
保存和更新命令后的MongoDB輸出
5.下載Eclipse項目
這是Spring Data MongoDB的一個示例。
下載您可以在此處下載此示例的完整源代碼: SpringDataMongoDBTutorial.zip
翻譯自: https://www.javacodegeeks.com/2018/03/spring-data-mongodb-tutorial.html
總結
以上是生活随笔為你收集整理的Spring Data MongoDB教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java sax解析xml_在Java中
- 下一篇: Spring Cloud Netflix