ฉันยังคิดถึงบทความนี้ก่อนอื่นทักษะของฉันไม่ดี แต่ฉันแค่อยากเรียนอะไรบางอย่าง เพราะเพื่อนหลายคนเคยเขียนเรื่องที่คล้ายกันมาก่อนหน้านี้และฉันได้อ่านพวกเขาหลายคน แต่คำอธิบายไม่ได้ลึกพอ ไม่มีคำตอบสำหรับคำถามที่เพื่อนบางคนเกิดขึ้น ที่นี่ฉันจัดเรียงตามความสามารถในปัจจุบันของฉัน และในที่สุดก็ประสบความสำเร็จ
ปัญหาเกิดขึ้นระหว่างการทดสอบ:
1. org/springframework/data/mapping/context/mappingContextaware
2. Src-Resolve: ไม่สามารถแก้ไขชื่อ 'ที่เก็บ: ที่เก็บ' เป็น 'คำจำกัดความประเภท (n)
ทั้งหมดข้างต้นเกิดจากเวอร์ชันไม่ตรงกัน โดยเฉพาะข้อผิดพลาดครั้งที่สองที่ฉันเห็นวิธีแก้ปัญหาบางอย่างที่กล่าวถึง JPA แต่ฉันไม่ได้ใช้ JPA ที่นี่ ต่อมาฉันแทนที่แพ็คเกจสปริง-ข้อมูลคอมมอนและไม่ปรากฏขึ้น
ก่อนอื่นให้ฉันพูดถึงสภาพแวดล้อมการพัฒนาของฉัน:
Myeclipse 6.5
MongoDB 2.0.8
ฤดูใบไม้ผลิ 3.0.4
ในที่สุดมีสองต่อไปนี้ (หากทั้งสองเวอร์ชันนี้ผิดปัญหาต่าง ๆ และซับซ้อนมีแนวโน้มที่จะเกิดขึ้น) ที่นี่ฉันจะให้รุ่นที่ฉันใช้
สารบัญฤดูใบไม้ผลิ
สปริง-คอมมอนส์
ทุกเวอร์ชันจะต้องเปลี่ยนแปลง ต่อไปนี้คือที่อยู่ดาวน์โหลด JAR
http://www.springsource.org/spring-data/mongoDB
http://www.springsource.org/spring-data/commons
เวอร์ชันที่ดาวน์โหลดคือ:
Spring-Data-Commons-Dist-1.4.0.M1
Spring-Data-Document-1.0.0.m2.zip
นี่คือรูปภาพของโครงการของฉัน
จากนั้นเริ่มต้นการพัฒนาของเรา!
ก่อนอื่นสร้างไฟล์กำหนดค่า Application.xml ใหม่
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://ww.w3.org/2001/xml 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.0.xsd http:/www.springfringfram http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd http://www.springframework.org/schema/beans http://ww.springframeworkwork.orgorork <Mongo: Mongo Host = "192.168.0.138" พอร์ต = "27017"/> <bean id = "Mongotemplate"> <constructor-arg ref = "Mongo"/> <constructor-arg name = "databasename" value = "db"/> <bean id = "personrepository"> <property name = "Mongotemplate" ref = "Mongotemplate"> </porement> </ebean> <บริบท: Annotation-config/> </ebeans>
จากนั้นเขียนอินเทอร์เฟซที่ทำงาน MongoDB
/ ** * abstractrepository.java */ แพ็คเกจ com.mongo.dao; นำเข้า java.util.list; นำเข้า com.mongo.bean.person; /** * toDo * @author culan * @version toDo */ส่วนต่อประสานสาธารณะ abstractrepository {/** * * <b> ฟังก์ชั่น: </b> เพิ่มวัตถุ * @author culan * @createdate 2012-12-12 11:41:30 */ /** * * <b> ฟังก์ชั่น: </b> ค้นหาวัตถุโดย id * @author culan * @createdate 2012-12 11:41:41 */บุคคลที่สาธารณะ findone (string id); /** * * <b> ฟังก์ชั่น: </b> แบบสอบถามทั้งหมด * @author culan * @createdate 2012-12-12 16:26:06 */รายการสาธารณะ <person> findall (); รายการสาธารณะ <Person> FindByregex (String regex); /** * * <b> ฟังก์ชั่น: </b> ลบวัตถุ ID ที่ระบุ * @author Culan * @createdate 2012-12 16:26:16 */โมฆะสาธารณะ removeOne (String ID); /** * * <b> ฟังก์ชั่น: </b> ลบทั้งหมด * @author culan * @createdate 2012-12-12 16:25:40 */โมฆะสาธารณะ removeAll (); /** * ค้นหาและแก้ไขโดย ID * <b> ฟังก์ชั่น: </b> * @author Culan * @createdate 2012-12 16:25:51 */โมฆะสาธารณะ findandModify (String ID); - เขียนคลาสการใช้งานอินเตอร์เฟสที่เกี่ยวข้อง:
/ ** * personrepository.java */ แพ็คเกจ com.mongo.dao.impl; นำเข้า java.util.list; นำเข้า java.util.regex.pattern; นำเข้า org.springframework.data.document.mongoDb.mongotemplate; นำเข้า org.springframework.data.document.mongoDb.query.criteria; นำเข้า org.springframework.data.document.mongoDb.query.update; นำเข้า org.springframework.data.document.mongoDb.query.update; นำเข้า com.mongo.bean.person; นำเข้า com.mongo.dao.abstractrepository; / ** * todo * @author culan * @version toDo */ personrepository คลาสสาธารณะใช้ abstractrepository {mongotemplate ส่วนตัว mongotemplate; / * (ไม่ใช่ javadoc) * @see com.mongo.dao.abstractrepository#findall () */ @Override รายการสาธารณะ <person> findall () {// วิธีการที่สร้างอัตโนมัติ } / * (ไม่ใช่ javadoc) * @see com.mongo.dao.abstractrepository#findandmodify (java.lang.string) * /@Override โมฆะสาธารณะ findandModify (string id) {// toDo วิธีที่สร้างขึ้นใหม่ getMongotemplate (). UpdateFirst (แบบสอบถามใหม่ (Criteria.where ("ID"). คือ (id)), การอัปเดตใหม่ (). inc ("อายุ", 3)); } / * (ไม่ใช่ javadoc) * @see com.mongo.dao.abstractrepository#findbyregex (java.lang.string) * / @Override รายการสาธารณะ <person> findByrege (String regex) เกณฑ์เกณฑ์ = เกณฑ์ใหม่ ("ชื่อ"). regex (pattern.toString ()); กลับ getMongotemplate () ค้นหา (แบบสอบถามใหม่ (เกณฑ์), person.class); } / * (ไม่ใช่ javadoc) * @see com.mongo.dao.abstractrepository#findone (java.lang.string) * / @Override บุคคลสาธารณะ findone (string id) {// toDo วิธีการที่สร้างขึ้นอัตโนมัติ } / * (ไม่ใช่ javadoc) * @see com.mongo.dao.abstractrepository#แทรก (com.mongo.bean.person) * / @Override โมฆะสาธารณะแทรก (บุคคลบุคคล) {// toDo วิธีการที่สร้างขึ้นอัตโนมัติ } / * (ไม่ใช่ javadoc) * @see com.mongo.dao.abstractrepository#removeAll () * / @Override โมฆะสาธารณะ removeAll () {// todo วิธีการที่สร้างอัตโนมัติรายการ stub <person> list = this.findall (); if (list! = null) {สำหรับ (บุคคลบุคคล: รายการ) {getMongotemplate (). ลบ (บุคคล); }}} / * (ไม่ใช่ javadoc) * @see com.mongo.dao.abstractrepository#removeOne (java.lang.string) * / @Override โมฆะสาธารณะลบ (สตริงรหัส) if (criteria == null) {Query Query = แบบสอบถามใหม่ (เกณฑ์); if (Query! = null && getMongotemplate (). findone (Query, person.class)! = null) getMongotemplate () ลบ (getMongotemplate (). findone (Query, person.class)); }} / ** * @return The Mongotemplate * / Mongotemplate สาธารณะ getMongotemplate () {return mongotemplate; } / ** * @param mongotemplate แผ่น mongotemplate ที่จะตั้งค่า * / โมฆะสาธารณะ setMongotemplate (mongotemplate mongotemplate) {this.mongotemplate = mongotemplate; - รหัสวัตถุบุคคลที่เกี่ยวข้องยังได้รับที่นี่
/ ** * person.java */ แพ็คเกจ com.mongo.bean; นำเข้า java.io.serializable; / ** * toDo * @author culan * @version toDo */ บุคคลระดับสาธารณะใช้ serializable {/ ** * */ ส่วนตัวคงที่สุดท้าย serialversionuid = 3617931430808763429L; รหัสสตริงส่วนตัว; ชื่อสตริงส่วนตัว; อายุ int ส่วนตัว; บุคคลสาธารณะ () {super (); } บุคคลสาธารณะ (รหัสสตริง, ชื่อสตริง, อายุ int) {super (); this.id = id; this.name = ชื่อ; this.age = อายุ; } / ** * @return id * / สตริงสาธารณะ getId () {return id; } / ** * @param id รหัสที่จะตั้งค่า * / โมฆะสาธารณะ setId (id id) {this.id = id; } / ** * @return ชื่อ * / สตริงสาธารณะ getName () {return name; } / ** * @param ชื่อชื่อที่จะตั้งค่า * / โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } / ** * @return อายุ * / public int getage () {return Age; } / ** * @param อายุอายุที่จะตั้งค่า * / public void setage (อายุ int) {this.age = อายุ; } / ** * * @param ชื่อ * @param อายุ * / บุคคลสาธารณะ (ชื่อสตริงอายุ int) {super (); this.name = ชื่อ; this.age = อายุ; } public String toString () {return "person [id ="+id+", name ="+name+", age ="+age+"]"; - ในที่สุดก็เขียนคลาสทดสอบของเราและเริ่มการทดสอบ
/ ** * mongotest.java */ แพ็คเกจ com.mongo.test; นำเข้า java.util.list; นำเข้า org.apache.commons.logging.log; นำเข้า org.apache.commons.logging.logfactory; นำเข้า org.springframework.context.applicationContext; นำเข้า org.springframework.context.support.classpathxmlapplicationContext; นำเข้า com.mongo.bean.person; นำเข้า com.mongo.dao.abstractrepository; นำเข้า com.mongo.dao.impl.personrepository; / ** * toDo * @author culan * @version toDo */ คลาสสาธารณะ mongotest {บันทึกสถิติคงที่ = logfactory.getLog (mongotest.class.getName ()); Private Adbtractrepository PR = NULL; /** * * <b> ฟังก์ชั่น: </b> * @author culan * @createdate 2012-12-12 16:08:02 */โมฆะสาธารณะ init () {log.debug ("เริ่มต้น"); ApplicationContext ctx = ใหม่ classpathxmlapplicationContext ("applicationcontext.xml"); pr = (บุคคลที่เป็นบุคคล) ctx.getBean ("บุคคลที่เป็นบุคคล"); }/** * * <b> ฟังก์ชั่น: </b> เพิ่ม * @author culan * @createdate 2012-12-12 16:11:01 */โมฆะสาธารณะแทรก () {บุคคล P = บุคคลใหม่ ("Curian", 27); Pr.Insert (P); log.debug ("เพิ่มสำเร็จ"); }/** * * <b> ฟังก์ชั่น: </b> วัตถุค้นหาตาม ID อินพุต * @author Culan * @createdate 2012-12-12 16:24:10 */โมฆะสาธารณะ findone () {string id = "50C83CB552C2CEB0463177D6"; บุคคล p = pr.findone (id); log.debug (P); }/** * * <b> ฟังก์ชั่น: </b> แบบสอบถามทั้งหมด * @author culan * @createdate 2012-12 16:08:54 */โมฆะสาธารณะ listall () {รายการ <person> list = pr.findall (); log.debug ("ผลลัพธ์การสืบค้นมีดังนี้:"); สำหรับ (บุคคล P: รายการ) {log.debug (p.toString ()); }}/** * * <b> ฟังก์ชั่น: </b> วิธีการทดสอบ * @author Culan * @createdate 2012-12-12 16:11:37 */โมฆะสาธารณะเริ่มต้น () {init (); //แทรก(); // listall (); findone (); }/** * <b> ฟังก์ชั่น: </b> ฟังก์ชั่นหลัก * @author culan * @createdate 2012-12 11:54:30 */โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// วิธีการที่สร้างอัตโนมัติ mongotest t = mongotest ใหม่ (); T.Start (); -เมื่อบันทึกปรากฏขึ้นหลังจากการรันไม่มีปัญหา
2012-12 16: 23: 59: debug com.mongo.test.mongotest-เริ่มต้น 2012-12-12 16: 23: 59: ข้อมูล org.springframework.context.support.classpathxmlapplicationContext 16:23:59 CST 2012]; รูทของบริบทลำดับชั้น 2012-12 16: 23: 59: ข้อมูล org.springframework.beans.factory.xml.xmlbeanDefinitionReader-การโหลดคำจำกัดความถั่ว XML จากทรัพยากรเส้นทางคลาส [ApplicationContext.xml] 2012-12-12 16: 24: 00: - singletons ล่วงหน้าใน org.springframework.beans.factory.support.defaultlistablebeanfactory@12a0f6c: การกำหนดถั่ว [Mongo, Mongotemplate, personrepository, org.springframework.context.annotation.internalconfigurationannotationprocessor, org.springframework.context.annotation.internalautowi RedannotationProcessor, org.springframework.context.annotation.internalrequiredannotationprocessor, org.springframework.context.annotation.internalcommonannotationprocessor]; รากของลำดับชั้นของโรงงาน 2012-12-12 16: 24: 00: debug com.mongo.test.mongotest-บุคคล [id = 50c83cb552c2Ceb0463177d6 ชื่อ = Cuiran อายุ = 27]
แนบซอร์สโค้ดสาธิตที่นี่: สาธิต
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น