También pensé en este artículo, en primer lugar, mis habilidades no son buenas. Pero me gusta estudiar algo. Porque muchos amigos han escrito a los similares antes de esto, y he leído muchos de ellos, pero la explicación no es lo suficientemente profunda. No hay respuesta a las preguntas planteadas por algunos amigos. Aquí lo ordeno en función de mis habilidades actuales. Y finalmente corre con éxito.
Se produjo un problema durante la prueba:
1. Org/springframework/data/mapping/context/mappingContextAware
2. Src-resolve: no puede resolver el nombre 'Repositorio: Repositorio' a una (n) 'Definición de tipo'
Todos los anteriores son causados por el desajuste de la versión. Especialmente el segundo error que vi algunas de las soluciones mencionadas JPA, pero no usé JPA aquí. Más tarde, reemplacé el paquete Spring-Data-Commons y no aparecí.
Permítanme hablar primero sobre mi entorno de desarrollo:
myeclipse 6.5
MongoDB 2.0.8
Primavera 3.0.4
Finalmente, están los siguientes dos (si estas dos versiones son incorrectas, es probable que ocurran varios problemas complicados). Aquí daré la versión que usé
documento de datos de primavera
comunes de datos de primavera
Todas las versiones deben cambiarse. La siguiente es la dirección de descarga de jar
http://www.springsource.org/spring-data/mongodb
http://www.springsource.org/spring-data/commons
Las versiones descargadas son:
Spring-Data-Commons-Dist-1.4.0.m1
Data-Document de primavera-1.0.0.m2.zip
Aquí hay fotos de mi proyecto
¡Entonces comience nuestro viaje de desarrollo!
Primero cree un nuevo archivo de configuración de aplicación.xml
<? xml versión = "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.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/scheatemema/mongo/mongo/mongo/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/Spring-Beansd " <Mongo: Mongo host = "192.168.0.138" puerto = "27017"/> <bean id = "mongoTemplate"> <constructor-arg ref = "mongo"/> <constructor-arg name = "databasename" valor = "db"/> <constructor-arg name = "predeterminado-collection" valor = "persona"/"valor" valor "valor =" db "/> <constructor-arg name =" defaultcollection "valor =" valor "/" nombre "valor" valor = "db"/> <constructor-arg name = "predeterminado de valor" valiente " id = "PersonRepository"> <Property Name = "MongoTemplate" ref = "MongoTemplate"> </property> </Bean> <context: Annotation-Config/> </Beans>
Luego escriba la interfaz que opera MongoDB
/ ** * AbstracTrePository.Java */ Package com.mongo.dao; import java.util.list; import com.mongo.bean.person; /** * tODO * @Author Culan * @version toDo */public interfaz abstratuossository {/** * * <b> function: </b> agregue objeto * @author Culan * @createDate 2012-12-12 11:41:30 */public void Insert (persona persona); /** * * <b> Función: </b> Buscar objeto por id * @author Culan * @createdate 2012-12 11:41:41 */Public Person FindOne (ID de cadena); /** * * <b> Función: </b> Consulta todos * @author Culan * @Createdate 2012-12-12 16:26:06 */Public List <Person> findAll (); Lista pública <Oll> FindByGeX (String REGEX); /** * * <b> Función: </b> Elimine el objeto ID especificado * @author Culan * @createdate 2012-12 16:26:16 */public void Remouse (ID de cadena); /** * * <b> Función: </b> Eliminar todos * @author Culan * @createdate 2012-12-12 16:25:40 */public void removeall (); /** * Buscar y modificar por ID * <b> Función: </b> * @author Culan * @createdate 2012-12 16:25:51 */public void findandModify (ID de cadena); } Escriba la clase de implementación de interfaz correspondiente:
/ ** * PersonRepository.java */ paquete com.mongo.dao.impl; import java.util.list; import java.util.regex.pattern; importar org.springframework.data.document.mongodb.MongoTemplate; importar org.springframework.data.document.mongodb.query.criteria; importar org.springframework.data.document.mongodb.query.update; importar org.springframework.data.document.mongodb.query.update; import com.mongo.bean.person; import com.mongo.dao.abStracTrePository; / ** * TODO * @Author Culan * @Version TODO */ Public Class PersonRepository Implements AbstrPrePository {private MongoTemplate MongoTemplate; / * (no javadoc) * @see com.mongo.dao.abstractrepository#findall () */ @Override public List <PERO> findAll () {// TODO Método Generado Autorgenerado retorno getMongoTemplate (). Find (New Query (), Person.class); } / * (no javadoc) * @see com.mongo.dao.AbStracTrePository#findandModify (java.lang.string) * /@Override public void findandModify (string id) {// toDO auto-Generado Method Stub // New Query (criteria getMongoTemplate (). UpdateFirst (nuevo consulta (criterio.where ("id"). IS (id)), nueva actualización (). Inc ("edad", 3)); } / * (no javadoc) * @see com.mongo.dao.abstractrepository#findByRegex (java.lang.string) * / @Override public List <Oll> findByRegex (String REGEX) {// TODO Autocenerado de método Patrón = Pattern.compile (REGEX, Pattern.Case_insensitive); Criterios criterios = nuevos criterios ("nombre"). Regex (Pattern.ToString ()); return getMongoTemplate (). Buscar (nueva consulta (criterio), persona.class); } / * (no javadoc) * @see com.mongo.dao.abstractrepository#findOne (java.lang.string) * / @Override public Person Findone (ID de cadena) {// TODO Auto Generado Método return getMonGoTemplate (). FindOne (New Query (Crititeria.Where.Where ("Id"). } / * (no javadoc) * @see com.mongo.dao.abstractrepository#insert (com.mongo.bean.person) * / @override public void insert (persona persona) {// todo method de método generado automático getMongoTemplate (). insert (persona); } / * (no javadoc) * @see com.mongo.dao.abstractrepository#removeall () * / @Override public void removeall () {// toDO Method de método generado automáticamente Lista <Oll> list = this.findall (); if (list! = null) {for (persona persona: list) {getMongoTemplate (). remove (persona); }}} / * (no javadoc) * @see com.mongo.dao.abstractrepository#removeMe (java.lang.string) * / @override public void removeMe (string id) {// toDO automático de método generado criterio stiteri = criteria.wher. ("id"). in); if (criteria == null) {Query Query = New Query (criterio); if (Query! = NULL && getMongoTemplate (). findOne (Query, Person.Class)! = NULL) GetMongoTemplate (). Eliminar (GetMongoTemplate (). FindOne (Query, Person.Class)); }} / ** * @return The MongoTemplate * / public MongoTemplate getMongoTemplate () {return MongoTemplate; } / ** * @param MongoTemplate La MongoTemplate para establecer * / public void setMongoTemplate (MongoTemplate MongoTemplate) {this.MongoTemplate = MongoTemplate; }} El código de objeto de persona correspondiente también se da aquí
/ ** * Person.java */ paquete com.mongo.bean; import java.io.serializable; / ** * TODO * @Author Culan * @version toDo */ Public Class Person implementa serializable {/ ** * */ Private Static final Long SerialVersionUid = 3617931430808763429l; ID de cadena privada; nombre de cadena privada; edad privada int; persona pública () {super (); } persona pública (ID de cadena, nombre de cadena, int Age) {super (); this.id = id; this.name = name; this.age = edad; } / ** * @return el id * / public string getId () {return id; } / ** * @param id El id para establecer * / public void setid (id id) {this.id = id; } / ** * @return el nombre * / public String getName () {return name; } / ** * @param nombre El nombre para establecer * / public void setName (nombre de cadena) {this.name = name; } / ** * @return la edad * / public int getAge () {return Age; } / ** * @param Age the Age to set * / public void setage (int a age) {this.age = edad; } / ** * * @param name * @param edad * / persona pública (nombre de cadena, int en age) {super (); this.name = name; this.age = edad; } public String toString () {return "persona [id ="+id+", name ="+name+", edad ="+edad+"]"; }} Finalmente, escriba nuestra clase de prueba y comience a probar
/ ** * mongotest.java */ paquete com.mongo.test; import java.util.list; importar org.apache.commons.logging.log; importar org.apache.commons.logging.logFactory; importar org.springframework.context.applicationContext; importar 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 MongoTest {private static log log = logFactory.getLog (mongotest.class.getName ()); Private Abstrpository pr = null; /** * * <b> Función: </b> * @author Culan * @createdate 2012-12-12 16:08:02 */public void init () {log.debug ("iniciar inicio"); ApplicationContext CTX = new ClassPathXMLApPlicationContext ("ApplicationContext.xml"); pR = (PersonRepository) ctx.getBean ("PersonRepository"); }/** * * <b> Función: </b> Agregar * @author Culan * @createdate 2012-12-12 16:11:01 */public void Insert () {Person P = Nueva persona ("Curian", 27); pr.insert (p); log.debug ("agregado con éxito"); }/** * * <b> Función: </b> Objeto de búsqueda basado en la ID de entrada * @Author Culan * @Createdate 2012-12-12 16:24:10 */public void findone () {String id = "50C83CB552C2CEB0463177D6"; Persona p = pr.findone (id); log.debug (p); }/** * * <b> Función: </b> Consulta todos * @author Culan * @createdate 2012-12 16:08:54 */public void listAll () {list <Oll> list = pr.findall (); log.debug ("El resultado de la consulta es el siguiente:"); para (persona p: list) {log.debug (p.ToString ()); }}/** * * <b> Función: </b> Método de prueba * @author Culan * @Createdate 2012-12-12 16:11:37 */public void start () {init (); //insertar(); // listall (); findOne (); }/** * <b> Función: </b> Función principal * @author Culan * @createdate 2012-12 11:54:30 */public static void main (string [] args) {// todo método generado automático stub MongoTest t = new MongoTest (); t.Start (); }}Cuando el registro aparece después de la ejecución, no hay problema.
2012-12 16: 23: 59: Debug com.mongo.test.MongoTest-Inicio Inicio 2012-12-12 16: 23: 59: Info org.springframework.context.support.classpathxmlaPlasplicationContext-Refreshing org.sspingframework.context.support.classpathxmaplappicationContextContex Fecha de inicio [miércoles 12 de diciembre 16:23:59 CST 2012]; Root of Context Jerarchy 2012-12 16: 23: 59: Info org.springframework.beans.factory.xml.xmlBeanDefinitionReader-Carga de definiciones de bean XML de clases Rath Rources [ApplicationContext.xml] 2012-12-12 16: 24: 00: ORG.SpringFrameWork.Beanss.Beanss.Beans.factory. Singletons preinstanciantes en org.springframework.beans.factory.support.defaultListableBeanfactory@12a0f6c: definición de frijoles [Mongo, MongoTemplate, PersonRepository, org.springframework.context.annotation.internalconfigurationAnnotationProcessor, org.springframework.context.annotation.internalAutowi redannotationProcessor, org.springframework.context.annotation.InternalRequiredAnnotationProcessor, org.springframework.context.annotation.internalCommonannotationProcessor]; Root de la jerarquía de fábrica 2012-12-12 16: 24: 00: Debug com.mongo.test.MongoTest-Persona [ID = 50C83CB552C2CEB0463177D6, Name = Cuiran, Age = 27]
Adjunte el código fuente de demostración aquí: demostración
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.