มีบทความในบันทึกก่อนหน้านี้ที่ไม่ได้ใช้สปริงเชื่อมต่อโดยตรงและดำเนินการฐานข้อมูล MongoDB ในรหัส Java ที่นี่เราจะบันทึกว่าเมื่อใช้สปริงการทำงานง่าย ๆ ของ MongoDB ใน Java
การกำหนดค่าแพ็คเกจ Maven:
เนื่องจากเกี่ยวข้องกับ Spring และ SpringMVC จึงจำเป็นต้องนำเข้าแพ็คเกจที่เกี่ยวข้อง:
<Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http:/MANCMMMMMMMMMMMMMMMMMMMMMMMMMMBM http://maven.apache.org/maven-v4_0_0.xsd "> <moderVersion> 4.0.0 </modelversion> <roupid> spring_mongo </groupid> Webapp </name> <url> http://maven.apache.org </url> <การพึ่งพา> <การพึ่งพา> <GroupId> org.springframework.data </groupid> <RoupID> org.mongoDB </groupId> <ratifactid> Mongo-Java-Driver </artifactid> <version> 3.0.3 </เวอร์ชัน> </การพึ่งพา> <การพึ่งพา> <roupId> คอมมอนส์-logging </groupId> <RoupID> org.springframework </groupId> <ratifactId> การทดสอบฤดูใบไม้ผลิ </artifactid> <sersion> 4.1.6.release </เวอร์ชัน> </การพึ่งพาอาศัยกัน> <การพึ่งพา <RoupID> org.springframework </groupId> <ratifactid> Spring-Context </artifactid> <sersion> 4.1.7.release </version> </การพึ่งพา> <pendency> <roupid> org.springframework </groupid> </perctency> </derctency> <uffect> <plugins> <plugin> <maven> Maven-Compiler-Plugin </artifactid> <sersion> 2.3.2 </เวอร์ชัน> <การกำหนดค่า> <conforation> 1.7 </source> <target> 1.7 </เป้าหมาย> <bootclasspath> $ {java.home} /lib/rt.jar; $ {java.home} /lib/jce.jar </bootclasspath> </polerarguments> </การกำหนดค่า> </plugin> </plugins> การกำหนดค่าพื้นฐานของฤดูใบไม้ผลิ:
ส่วนใหญ่เป็นการเปิดใช้งานการสแกนคำอธิบายประกอบ ฯลฯ :
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <ถั่ว xmlns: task = "http://www.springframework.org/schema/task" xmlns = "http://www.springframework xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: บริบท = "http://www.springframework.org/schema/context http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/task http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3 <บริบท: Component-Scan base-package = "Spring_mogo.dao.daoimp" /> <!-นำเข้าไฟล์การกำหนดค่าของ MongoDB-> <import Resource = "Spring-MongoDb305.xml" /> <!
ฤดูใบไม้ผลิเชื่อมต่อ MongoDB และกำหนดค่าการกำหนดค่าสำหรับโรงงานที่เกี่ยวข้อง:
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://ww.w3.org/2001/xml xmlns: p = "http://www.springframework.org/schema/p" xmlns: mongo = "http://www.springframework.org/schema/data/mongo" XSI: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http:/www.springframeworkram http://www.springframework.org/schema/data/mongo/spring-mongo.xsd "> <!-การกำหนดค่าฤดูใบไม้ผลิสำหรับการเชื่อมต่อกับฐานข้อมูล MongoDB-> <Mongo: โฮสต์ Mongo-client =" 192.168.01 credentials = "tuzongxun: 123456@mongotest" id = "Mongo"> <Mongo: ตัวเลือกไคลเอนต์การเขียน concern = "ปลอดภัย"/> </mongo: Mongo-client> <mongo: db-factory id = "Mongodbfactory" dbname = "Mongotest" วิธีการที่สอดคล้องกัน-> <bean id = "mongotemplate"> <constructor-arg name = "MongoDbfactory" ref = "Mongodbfactory"/> </ebean> </ebeans>
คลาสเอนทิตีที่สอดคล้องกับฐานข้อมูล:
ควรสังเกตว่าจำเป็นต้องใช้อินเทอร์เฟซอนุกรมและตั้งค่าแอตทริบิวต์ UID มิฉะนั้นจะไม่สามารถแปลงผลการส่งคืนฐานข้อมูลได้โดยตรงเป็นแอตทริบิวต์วัตถุระหว่างการดำเนินการ:
แพ็คเกจ Spring_mongo.models; นำเข้า java.io.serializable; ชั้นเรียนสาธารณะ USERMODEL ใช้ serializable {ส่วนตัวคงที่สุดท้าย Long SerialVersionUID = 1L; ชื่อผู้ใช้สตริงส่วนตัว; รหัสผ่านสตริงส่วนตัว Public UserModel (ชื่อผู้ใช้สตริง, รหัสผ่านสตริง) {super (); this.username = ชื่อผู้ใช้; this.password = รหัสผ่าน; } สตริงสาธารณะ getUserName () {ส่งคืนชื่อผู้ใช้; } โมฆะสาธารณะ setUserName (ชื่อผู้ใช้สตริง) {this.userName = ชื่อผู้ใช้; } สตริงสาธารณะ getPassword () {ส่งคืนรหัสผ่าน; } โมฆะสาธารณะ setPassword (รหัสผ่านสตริง) {this.password = รหัสผ่าน; - รับ mongotemplete ที่ทำงาน mongoDB ตามการกำหนดค่าฤดูใบไม้ผลิและคุณต้องใช้อินเทอร์เฟซ ApplicationContextaware:
แพ็คเกจ Spring_mogo.dao.daoimp; นำเข้า org.springframework.beans.beansexception; นำเข้า org.springframework.context.applicationContext; นำเข้า org.springframework.context.applicationContextaware; นำเข้า org.springframework.data.mongodb.core.mongotemplate; บทคัดย่อระดับสาธารณะ AbstractBaseMongotemplete ใช้ ApplicationContextaware {mongotemplate mongotemplate ที่ได้รับการป้องกัน / ** * @description Set Mongotemplate ตามไฟล์กำหนดค่า * @param mongotemplate */ โมฆะสาธารณะ setMongotemplate (mongotemplate mongotemplate) {this.mongotemplate = mongotemplate; } @Override โมฆะสาธารณะ setApplicationContext (ApplicationContext ApplicationContext) พ่น beansexception {Mongotemplate Mongotemplate = ApplicationContext.getBean ("Mongotemplate", Mongotemplate.class); SetMongotemplate (Mongotemplate); - อินเทอร์เฟซเพื่อใช้งานฐานข้อมูลและคลาสการใช้งานที่สอดคล้องกัน:
การเพิ่มขั้นพื้นฐานการลบการดัดแปลงและการค้นหาจะแสดงให้เห็น สิ่งที่ควรให้ความสนใจคือการประกาศพารามิเตอร์และการแปลงคลาสเอนทิตีเมื่อได้รับข้อมูลที่ส่งคืน:
(1) อินเทอร์เฟซ:
แพ็คเกจ Spring_mogo.dao; นำเข้า java.util.list; นำเข้า Spring_mongo.models.usermodel; อินเทอร์เฟซสาธารณะ userdao { / ** * ข้อมูลสอบถาม * * @author: tuzongxun * @title: findall * @param @return * @@return list <usermodel> * @date 13 พฤษภาคม 2016 3:07:39 pm * @throws * / รายการสาธารณะ / ** * ข้อมูลใหม่ * * @author: tuzongxun * @title: insertuser * @param @param user * @return เป็นโมฆะ * @date 13 พฤษภาคม 2016 3:09:45 PM * @throws */ public void insertuser (USERMODEL USER); / ** * ลบข้อมูล * * @author: tuzongxun * @title: removeUser * @param @param ชื่อผู้ใช้ * @return โมฆะ * @date 13 พฤษภาคม 2016 3:09:55 PM * @throws */ โมฆะสาธารณะ removeUser (สตริง username); / ** * แก้ไขข้อมูล * * @author: tuzongxun * @title: updateUser * @param @param ผู้ใช้ * @return เป็นโมฆะ * @date 13 พฤษภาคม 2016 3:10:06 PM * @throws */ Public Void UpdateUser (USERMODEL USER); / ** * Query ตามเงื่อนไข * * @author: tuzongxun * @title: findforrequery * @param * @return เป็นโมฆะ * @date 13 พฤษภาคม 2016 3:23:37 PM * @throws */ รายการสาธารณะ - (2) คลาสการใช้งานที่นี่เราจำเป็นต้องสืบทอดคลาส AbstractBaseMongotemplete เพื่อรับ Mongotemplete สำหรับการดำเนินการต่างๆ:
แพ็คเกจ Spring_mogo.dao.daoimp; นำเข้า java.util.list; นำเข้า org.springframework.data.mongodb.core.query.criteria; นำเข้า org.springframework.data.mongodb.core.query.query; นำเข้า org.springframework.data.mongodb.core.query.update; นำเข้า org.springframework.stereotype.component; นำเข้า Spring_mogo.dao.userdao; นำเข้า Spring_mongo.models.usermodel; นำเข้า com.mongoDb.basicdbobject; นำเข้า com.mongodb.dbobject; @Component ("UserDaoImp") ระดับสาธารณะ UserDaoimp ขยาย AbstractBaseMongotemplete ใช้ UserDao { / ** * สอบถามข้อมูลทั้งหมด * * @author: Tuzongxun * @title: Findall * @description: todo * @param @return รายการ <EserModel> findall () {// คลาส Corpse ที่สอดคล้องกันและชื่อคอลเลกชันที่สอดคล้องกันของคอลเลกชันจำเป็นต้องตั้งค่าเพื่อให้ผลลัพธ์การสืบค้นถูกแมปรายการโดยตรง <SuserModel> userlist = mongotemplate.findall (usermodel.class, "ผู้ใช้"); ส่งคืนลิสต์ผู้ใช้; } / ** * ข้อมูลใหม่ * * @author: tuzongxun * @title: insertuser * @description: todo * @param @param ผู้ใช้ * @date 13 พฤษภาคม 2016 3:10:45 PM * @throws * / @override BasicDbObject (); Object.put ("ชื่อผู้ใช้", user.getUserName ()); Object.put ("รหัสผ่าน", user.getPassword ()); Mongotemplate.insert (Object, "ผู้ใช้"); } / ** * ลบข้อมูลตามเงื่อนไข * * @author: tuzongxun * @title: removeUser * @description: todo * @param @param username * @date 13 พฤษภาคม 2016 3:11:01 PM * @throws * / @Override เกณฑ์เกณฑ์ = เกณฑ์ใหม่ ("ชื่อผู้ใช้"); Criteria.is (ชื่อผู้ใช้); query.addcriteria (เกณฑ์); Mongotemplate.remove (Query, "ผู้ใช้"); } / ** * แก้ไขข้อมูล * * @author: tuzongxun * @title: updateUser * @description: todo * @param @param ผู้ใช้ * @date 13 พฤษภาคม 2016 3:11:12 PM * @throws * / @override เกณฑ์เกณฑ์ = เกณฑ์ใหม่ ("ชื่อผู้ใช้"); Criteria.is (user.getUserName ()); query.addcriteria (เกณฑ์); // ตั้งค่าการปรับเปลี่ยนเนื้อหาการอัปเดตการอัปเดต = update.update ("รหัสผ่าน", user.getPassword ()); // พารามิเตอร์: เงื่อนไขการสืบค้น, เปลี่ยนผลลัพธ์, ชื่อการรวบรวม Mongotemplate.updateFirst (คำถาม, อัปเดต, "ผู้ใช้"); } / ** * แบบสอบถามตามเงื่อนไข * * @author: tuzongxun * @title: findorrequery * @description: todo * @param @param username * @date 13 พฤษภาคม 2016 4:08:15 PM * @throws * / @Override เกณฑ์เกณฑ์ = เกณฑ์ใหม่ ("ชื่อผู้ใช้"); Criteria.is (ชื่อผู้ใช้); query.addcriteria (เกณฑ์); // เงื่อนไขการสืบค้นคลาสเอนทิตีที่สอดคล้องกับชุดตั้งชื่อชื่อ <USERMODEL> userList = Mongotemplate.find (Query, usermodel.class, "ผู้ใช้"); ส่งคืนลิสต์ผู้ใช้; - คลาสทดสอบ:
เพื่อตรวจสอบความถูกต้องของรหัสและการกำหนดค่าด้านบนรหัสคลาสทดสอบมีดังนี้:
แพ็คเกจ Spring_mongo.test; นำเข้า java.util.list; นำเข้า org.junit.test; นำเข้า org.junit.runner.runwith; นำเข้า org.springframework.beans.factory.annotation.autowired; นำเข้า org.springframework.test.context.contextconfiguration; นำเข้า org.springframework.test.context.junit4.springjunit4classrunner; นำเข้า Spring_mogo.dao.userdao; นำเข้า Spring_mongo.models.usermodel; @runwith (springjunit4classrunner.class) @contextconfiguration (locations = {"classpath: spring.xml"}) คลาสสาธารณะ mongotest {@autowired ส่วนตัว userdao userdao; / ** * การทดสอบแบบสอบถาม * * @author: tuzongxun * @title: monfindtest * @param * @return โมฆะ * @date 13 พฤษภาคม 2016 3:27:51 PM * @throws */ @test โมฆะสาธารณะ monfindtest () if (usermodels! = null && usermodels.size ()> 0) {สำหรับ (usermodel user: usermodels) {system.out.println (user.getUserName () + ":" + user.getPassword ()); }}} / ** * แทรกการทดสอบข้อมูล * * @author: tuzongxun * @title: moninserttest * @param * @return เป็นโมฆะ * @date 13 พฤษภาคม 2016 3:27:38 PM * @throws * / @Test userdao.insertuser (ผู้ใช้); this.monfindtest (); } / ** * ลบการทดสอบ * * @author: tuzongxun * @title: monremoveTest * @param * @return เป็นโมฆะ * @date 13 พฤษภาคม 2016 3:28:06 PM * @throws * / @test โมฆะสาธารณะ monremoveTest () userdao.removeuser (ชื่อผู้ใช้); this.monfindtest (); } / ** * การปรับเปลี่ยนการทดสอบ * * @author: tuzongxun * @title: monupdatetest * @param * @return เป็นโมฆะ * @date 13 พฤษภาคม 2016 3:50:08 PM * @throws * / @test โมฆะสาธารณะ monupdetetest () userdao.updateUser (ผู้ใช้); this.monfindtest (); } / ** * Query ตามเงื่อนไข * * @author: tuzongxun * @title: monfindforruq * @param * @return เป็นโมฆะ * @date 13 พฤษภาคม 2016 4:10:53 PM * @throws * / @test โมฆะสาธารณะโมฆะ รายการ <EserModel> USERMODELS = USERDAO.FINDFORREQUERY (ชื่อผู้ใช้); if (usermodels! = null && usermodels.size ()> 0) {สำหรับ (usermodel user: usermodels) {system.out.println (user.getUserName () + ":" + user.getPassword ()); - ดาวน์โหลดการสาธิตในระยะต่อมา: สาธิต
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น