J'ai aussi pensé à cet article, tout d'abord, mes compétences ne sont pas bonnes. Mais j'aime juste étudier quelque chose. Parce que de nombreux amis en ont écrit des similaires avant cela, et j'en ai lu beaucoup, mais l'explication n'est pas assez approfondie. Il n'y a pas de réponse aux questions soulevées par certains amis. Ici, je le triera en fonction de mes capacités actuelles. Et enfin courir avec succès.
Un problème s'est produit pendant le test:
1. Org / springframework / data / mapping / context / mappingContextaware
2. Src-Resolve: Impossible de résoudre le nom 'Repository: Repository' à A (n) 'Type Definition'
Tout ce qui précède est causé par la décalage des versions. Surtout la deuxième erreur que j'ai vu certaines des solutions mentionnées JPA, mais je n'ai pas utilisé JPA ici. Plus tard, j'ai remplacé le package de data de printemps et je ne suis pas apparu.
Permettez-moi d'abord de parler de mon environnement de développement:
myeclipse 6.5
MongoDB 2.0.8
printemps 3.0.4
Enfin, il y a les deux suivants (si ces deux versions sont erronées, des problèmes divers et compliqués sont susceptibles de se produire). Ici, je vais donner la version que j'ai utilisée
document de printemps
commissaires de printemps
Toutes les versions doivent être modifiées. Ce qui suit est l'adresse de téléchargement du pot
http://www.springsource.org/spring-data/mongodb
http://www.springsource.org/spring-data/commons
Les versions téléchargées sont:
printemps-data-commons-dis-1.4.0.m1
printemps-document-1.0.0.m2.zip
Voici des photos de mon projet
Ensuite, commencez notre parcours de développement!
Créez d'abord un nouveau fichier de configuration Application.xml
<? xml version = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: context = "http://www.springframework.org/schema/context" xmlns: mongo = "http://www.springframework.org/schema/data/mongo" xsi: schemalocation = "http://www.springfrraworks.ormowing =" http://www.springframe http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/Beans/wwwreans-3.0. <Mongo: Mongo host = "192.168.0.138" Port = "27017" /> <Bean Id = "Mongotemplate"> <Constructor-Arg Ref = "Mongo" /> <Constructor-Arg Name = "Databasename" Value = "DB" /> <constructeur-arg name = "Defaultcollection" id = "PersonRepository"> <propriété name = "mongotemplate" ref = "Mongotemplate"> </promest> </bEAN> <Context: Annotation-Config /> </ Beans>
Ensuite, écrivez l'interface qui fonctionne
/ ** * abstractrepository.java * / package com.mongo.dao; Importer java.util.list; import com.mongo.bean.person; / ** * TODO * @Author Culan * @version todo * / interface publique Abstractrepository {/ ** * * <b> Fonction: </b> Ajouter un objet * @author Culan * @createdate 2012-12-12 11:41:30 * / public vide insert (personne personne); / ** * * <b> Fonction: </b> Trouver l'objet par id * @author Culan * @Createdate 2012-12 11:41:41 * / Public Person FindOne (String ID); / ** * * <b> Fonction: </b> Query All * @Author Culan * @Createdate 2012-12-12 16:26:06 * / public list <onon> findall (); Liste publique <ponse> findByRegex (String Regex); / ** * * <b> Fonction: </b> Supprimez l'objet ID spécifié * @author Culan * @Createdate 2012-12 16:26:16 * / public void removeone (String id); / ** * * <b> Fonction: </b> Supprimer tout * @Author Culan * @createdate 2012-12-12 16:25:40 * / public void reloveAll (); / ** * trouver et modifier par id * <b> Fonction: </b> * @author Culan * @createdate 2012-12 16:25:51 * / public void findAndModify (String id); } Écrivez la classe d'implémentation d'interface correspondante:
/ ** * PersonRepository.java * / package com.mongo.dao.impl; Importer java.util.list; import java.util.regex.pattern; import org.springframework.data.document.mongodb.mongotemplate; import org.springframework.data.document.mongodb.query.criteria; import org.springframework.data.document.mongodb.query.update; import org.springframework.data.document.mongodb.query.update; import com.mongo.bean.person; import com.mongo.dao.abstractrepository; / ** * TODO * @Author Culan * @version todo * / classe publique PersonPository implémente Abstractrepository {private Mongotemplate Mongotemplate; / * (non javadoc) * @see com.mongo.dao.abstractrepository # findall () * / @Override public list <onon> findall () {// todo method-généré par le stub return getMongotemplate (). find (new query (), person.class); } / * (non javadoc) * @see com.mongo.dao.abstractrepository # findAndModify (java.lang.string) * / @Override public void FindAndModify (String id) {// too Auto-Generated Method Stub // New Query (Criteriawhere ("id"). Is (id)), New Update (). getMongotemplate (). UpdateFirst (nouvelle requête (critères.where ("id"). est (id)), new update (). Inc ("Age", 3)); } / * (non javadoc) * @see com.mongo.dao.abstractrepository # findByRegex (java.lang.string) * / @Override public list <onon> findByRegex (String regex) {// Todo Auto-Generated Method Pattern = motive.Compile (regex, motive.case_insensensitive); Critères critères = nouveaux critères ("nom"). Regex (patron.toString ()); return getMongotemplate (). find (nouvelle requête (critères), personne.classe); } / * (non javadoc) * @see com.mongo.dao.abstractrepository # findone (java.lang.string) * / @Override Public Person FindOne (String id) {// todia généré par la méthode Stume GetMongotemplate (id). Person.class); } / * (non javadoc) * @see com.mongo.dao.abstractrepository # insert (com.mongo.bean.person) * / @Override public void insert (personne personne) {// TODO Méthode générée automatiquement Stub getmongotemplate (). insert (personne); } / * (non javadoc) * @see com.mongo.dao.abstractrepository # removeall () * / @Override public void reloveAll () {// todo marketeated method list <onh> list = this.findall (); if (list! = null) {for (personne personne: list) {getMongotemplate (). supprimer (personne); }}} / * (non javadoc) * @see com.mongo.dao.abstractreSository # removeone (java.lang.string) * / @Override public void retireone (String id) {// TODO Méthode générée automatiquement critères de talon Critères = critère.Where (id "). dans (id); if (critères == null) {requête query = new requête (critères); if (query! = null && getMongotemplate (). FindOne (query, personne.class)! = null) getMongotemplate (). retire (getMongotemplate (). findOne (query, personne.class)); }} / ** * @return le mongotemplate * / public mongotemplate getMongotemplate () {return mongotemplate; } / ** * @param mongotemplate le mongotemplate à définir * / public void setMongotemplate (mongotemplate mongotemplate) {this.mongotemplate = mongotemplate; }} Le code d'objet personne correspondant est également donné ici
/ ** * personne.java * / package com.mongo.bean; import java.io.serializable; / ** * TODO * @Author Culan * @version Todo * / Public Class Person implémente Serializable {/ ** * * / Private Static Final Long SerialVersionUID = 3617931430808763429L; ID de chaîne privée; nom de chaîne privé; Âge privé; Public () {super (); } Public (String id, nom de chaîne, int age) {super (); this.id = id; this.name = name; this.age = âge; } / ** * @return l'ID * / public String getID () {return id; } / ** * @param id L'ID à définir * / public void setid (String id) {this.id = id; } / ** * @return le nom * / public String getName () {return name; } / ** * @param name Le nom pour set * / public void setName (String name) {this.name = name; } / ** * @return l'âge * / public int getage () {return âge; } / ** * @param Âge l'âge pour définir * / public void setage (int age) {this.age = age; } / ** * * @param name * @param Âge * / Public Person (nom de chaîne, int Age) {super (); this.name = name; this.age = âge; } public String toString () {return "personne [id =" + id + ", name =" + name + ", age =" + age + "]"; }} Enfin notez notre classe de test et commencez à tester
/ ** * mongotest.java * / package com.mongo.test; Importer java.util.list; import org.apache.commons.logging.log; import org.apache.commons.logging.logfactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.classPathxmlApplicationContext; import com.mongo.bean.person; import com.mongo.dao.abstractrepository; import com.mongo.dao.impl.personRepository; / ** * TODO * @Author Culan * @version todo * / public class MongoSest {private static log log = logfactory.getLog (mongotest.class.getName ()); Abstractrepository privé Pr = null; / ** * * <b> Fonction: </b> * @Author Culan * @Createdate 2012-12-12 16:08:02 * / public void init () {log.debug ("start start"); ApplicationContext ctx = new ClassPathxMlApplicationContext ("ApplicationContext.xml"); pr = (PersonRepository) ctx.getBean ("PersonRepository"); } / ** * * <b> Fonction: </b> add * @author Culan * @createdate 2012-12-12 16:11:01 * / public void insert () {personne p = new personne ("Curian", 27); pr.insert (p); log.debug ("ajouté avec succès"); } / ** * * <b> Fonction: </b> Objet de recherche basé sur l'ID d'entrée * @Author Culan * @createdate 2012-12-12 16:24:10 * / public void findone () {String id = "50c83cb552c2ceb0463177d6"; Personne p = pr.findOne (id); log.debug (p); } / ** * * <b> Fonction: </b> Query All * @author Culan * @createdate 2012-12 16:08:54 * / public void listall () {list <onon> list = pr.findall (); Log.Debug ("Le résultat de la requête est le suivant:"); pour (personne p: list) {log.debug (p.toString ()); }} / ** * * <b> Fonction: </b> Méthode de test * @Author Culan * @createdate 2012-12-12 16:11:37 * / public void start () {init (); //insérer(); // listall (); findone (); } / ** * <b> Fonction: </b> Fonction principale * @author Culan * @createdate 2012-12 11:54:30 * / public static void main (String [] args) {// Todo Auto-Generated Method Stub Mongotest t = new Mongotest (); t.start (); }}Lorsque le journal apparaît après l'exécution, il n'y a pas de problème.
2012-12 16: 23: 59: DEBUG com.mongo.test.mongotest - Démarrer Start 2012-12-12 16: 23: 59: info org.springframework.context.support.classpathxmlapplicationcontext - rafraîchissement org.springframework.contex 12 décembre 16:23:59 CST 2012]; Root of Context Hiérarchy 2012-12 16: 23: 59: info org.springframework.beans.factory.xml.xmlbeandefinitionReader - Chargement des définitions de bean XML à partir de la ressource du chemin de classe [ApplicationContext.xml] 2012-12-12 16: 24: 00: Info Path. org.springframework.beans.factory.support.defaultListableBeanFactory - Singletons pré-stantie dans org.springframework.beans.factory.support.defaultListableBeanfactory@12a0f6c: Définition des haricots [Mongo, Mongotemplate, PersonRepository, Org.SpringFramework.Context.Annotation.InternalConfigurationAnnotationProcessor, Org.SpringFramework.Context.Annotation.InternalAutowi RedannotationProcessor, org.springframework.context.annotation.internalrequirennotationProcessor, org.springframework.context.annotation.internalcommonannotationProcessor]; Racine de la hiérarchie d'usine 2012-12-12 16: 24: 00: Debug com.mongo.test.mongotest - personne [id = 50c83cb552c2ceb0463177d6, name = cuiran, âge = 27]
Joignez le code source de démo ici: démo
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.